在Docker上部署Springboot项目
###1.安装docker
2.安装mysql
- 拉 Mysql 镜像
docker pull mysql:5.7.31
- 运行 Mysql 5.7.31
第一次运行需要设置密码
docker run -d --name myMysql -p 9506:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7.31
不是第一次
docker run -d --name myMysql -p 9506:3306 -v /data/mysql:/var/lib/mysql mysql:5.7.31
启动成功会返回一个id
参数分析
-d: 后台运行容器,并返回容器 ID
–name myMysql: 为容器指定一个名称
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-v: 绑定一个卷,容器的 /var/lib/mysql 映射到 主机的目录 /data/mysql
-e MYSQL_ROOT_PASSWORD=123456: 设置环境变量,密码设置为 123456
mysql:5.7.31:使用镜像 mysql:5.7.31
扩展:mysql -u root -p 进入MySQL
3.把打包好的jar包上次到 /opt/service/testdocker目录下
把打包好的jar包上次到 /opt/service/testdocker目录下,上传之后,在 /opt/service/testdocker 新建一个文件名为Dockerfile的文件,文件内容如下:
FROM openjdk:8
VOLUME /opt/service/testdocker
ADD testdocker.jar testdocker.jar
EXPOSE 9999
ENTRYPOINT ["java","-jar","/testdocker.jar"]
from openjdk:8 拉取一个 jdk 为 1.8 的依赖环境
testdocker.jar 就是你上传的 jar 包,替换为 jar 包的名称
testdocker.jar 是你将该 jar 包重新命名为什么名称,在容器中运行
expose 该容器暴露的端口是多少,就是 jar 在容器中以多少端口运行
entrypoint 容器启动之后执行的命令,java -jar /testdocker.jar 即启动 jar
4.打包镜像
在 /opt/service/testdocker 执行以下打包命令
docker build -t fishexam .
5.运行容器
1. 第一次启动
docker run -d -p 9999:9090 --name testdocker-9999 testdocker
然后访问ip:+端口
2. 启动过了
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38e8a434088b testdocker "java -jar /testdock…" 6 days ago Exited (255) 21 minutes ago 9999/tcp, 0.0.0.0:9999->9090/tcp, :::9999->9090/tcp testdocker-9999
56c468b14848 mysql:5.7.31 "docker-entrypoint.s…" 6 days ago Exited (255) 21 minutes ago 33060/tcp, 0.0.0.0:9506->3306/tcp, :::9506->3306/tcp myMysql
启动命令
docker run -d -p 9999:9090 --name testdocker-9998 testdocker
启动成功会返回一个id
docker 常用命令
docker run: 启动一个容器
docker ps: 查看正在运行的容器
docker images: 查看本地镜像列表
docker pull: 拉取一个镜像到本地
docker build: 根据 Dockerfile 构建一个镜像
docker stop: 停止一个运行中的容器
docker rm: 删除一个容器
docker rmi: 删除一个本地镜像
docker exec -it <容器名称或者ID> ls : 在运行中的容器内执行命令
docker restart: 重启一个容器
docker logs: 查看容器的日志
docker inspect: 查看容器的详细信息
docker network: 管理容器网络
docker volume: 管理容器数据卷
docker-compose up: 使用 Docker Compose 启动多个容器
docker-compose down: 停止并移除使用 Docker Compose 启动的容器
docker save: 将一个镜像保存为 tar 文件
docker load: 从 tar 文件中加载一个镜像
docker tag: 给镜像打标签
docker push: 推送一个本地镜像到远程仓库
设置开机自启
[root@localhost ~]# sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3bf17dd66cfc mysql:5.7.31 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 33060/tcp, 0.0.0.0:9506->3306/tcp, :::9506->3306/tcp myMysql
748874f45662 testdocker "java -jar /testdock…" 10 minutes ago Up 10 minutes 9999/tcp, 0.0.0.0:9999->9090/tcp, :::9999->9090/tcp testdocker-9999
[root@localhost ~]# docker update --restart=always myMysql
myMysql
[root@localhost ~]# docker update --restart=always testdocker-9999
testdocker-9999