DockerCompose自动化部署Docker
2 DockerCompose自动化部署(章鱼哥直接拿捏)
在我们的手动部署的过程中,非常繁琐且容易出错,接下来我将介绍更加高效且优雅的方式。"章鱼哥"--DockerCompose
博客参考:Docker-完整项目的部署(保姆级教学)_docker部署项目教程-CSDN博客
2.1 从docker run到DockerCompose的过渡
以mysql的docker run部署指令为例,如下:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
--network project
mysql
AI写代码
bash
如果使用docker-compose.yml,可以转变如下:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/root/mysql/conf:/etc/mysql/conf.d"
- "/root/mysql/data:/var/lib/mysql"
networks:
- new
networks:
new:
name: project
AI写代码
bash
我们可以看到,两者实际上是一一对应的,这是语法风格不同罢了,其中version: "3.8"是DockerCompose的语法版本。
与上述例子我们可以得到对应表,如下:
docker run参数 DockerCompose指令 说明
--name container_name 容器名称
-p ports 设置端口映射
-e environment 环境设置
-v volumes 数据卷挂载
--network networks 网络设置
镜像名称(这里是mysql) image 镜像名称
2.2 常用命令
docker compose [OPTIONS] [COMMAND]
AI写代码
bash
OPTIONS和COMMAND都是可选参数,比较常见的有,该图片来自黑马程序员:
2.3 部署
2.3.1 编写docker-compose.yml文件
大同小异,先CV再改改:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: project
AI写代码
bash
不过这里有几个点需要注意:
①被depends_on指令标记的会被优先部署,在这里mysql就会被优先部署
②build是用来构建镜像的,context表示资源路径(点表示当前路径),dockerfile用于寻找我们的Dockerfile文件(默认就是Dockerfile,可以不写,除非将Dockerfile改名了)
③由于我们没给hamll指定镜像名称,docker会自动给它起名root-xx,这里是root-hmall
2.3.2 部署运行
根据docker-compose.yml文件中的路径,将所需的jar包和Dockerfile文件(详情可看1.3.2.1)、mysql文件夹(详情可看1.2.1)、nginx文件夹(详情可看1.4.1)、以及docker-compose.yml放在对应路径下,我这里全部放在一个文件夹下,如下:
在docker-compose.yml目录下执行指令,进行部署:
docker compose up -d
AI写代码
bash

浙公网安备 33010602011771号