Docker快速部署--docker-compose一键多容器应用编排部署
一.docker-compose作用
Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。通过一个 docker-compose.yml 文件,您可以配置应用程序需要的所有服务(例如:Web服务器、数据库、缓存等)并轻松管理它们。
Docker Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
二.实践
Docker实践系列,前面三篇文章分别演示了单个容器一键部署&初始化:
nging前端服务器以及前端应用部署//
mysql数据库以及数据自动初始化//
springboot包应用自动部署以及初始化。
通过docker-compose,可以实现多容器编排部署,实现应用环境一键部署完成,适合交付以及生产环境,测试环境快速搭建。本次示例通过对之前示例进行优化,实现多容器一键自动部署以及数据初始化。
前置内容:
需要看过前面三篇,方便快速理解本篇内容。
docker Jar包一键部署:
https://blog.csdn.net/qq_27437073/article/details/154124508?spm=1001.2014.3001.5502
docker nginx web应用一键部署:
https://blog.csdn.net/qq_27437073/article/details/154118083?spm=1001.2014.3001.5502
dockermysql一键部署以及数据自动初始化:
https://blog.csdn.net/qq_27437073/article/details/154074919?spm=1001.2014.3001.5502
文件夹优化
根据之前文字的示例,将各个运行配置重新按照下图文件夹编排好
详细目录结构如下: 每个文件夹作用根据实际需要建立,具体作用翻阅之前文章

docker-compose文件编写
示例以及每个属性作用见注释:
version: '3.8' #指定Docker Compose文件格式的版本。常用版本为3.8,3.7等。
services:wb-mysql:image: mysql:5.7 #指定容器运行的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。 container_name: wb-mysql #指定自定义容器名称,而不是生成的默认名称。ports: #宿主机端口 : 容器端口 (即:HOST:CONTAINER) 的格式,或者仅仅指定容器的端口(宿主机将会随机选择端口)。- "3306:3306"environment: #添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False。MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: amequipmentTZ: Asia/Shanghaivolumes:- ./mysql/data:/var/lib/mysql- ./mysql/init-scripts:/docker-entrypoint-initdb.d- ./mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf- ./mysql/logs:/var/log/mysqlrestart: unless-stoppedwb-nginx:image: nginx:latestenvironment:- TZ=Asia/Shanghaicontainer_name: wb-nginxports:- "8080:80"- "8000:81"volumes:- ./nginx/dist:/usr/share/nginx/html- ./nginx/images:/images- ./nginx/logs:/var/log/nginx- ./nginx/conf.d:/etc/nginx/conf.drestart: unless-stoppedwb-api:build:context: ./apidockerfile: Dockerfile #指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。environment:- TZ=Asia/Shanghaiimage: wb-apicontainer_name: wb-apiports:- "8081:8081"volumes:- ./api/logs:/logs- ./api/config:/config- ./nginx/images:/imagesdepends_on:- wb-mysqlrestart: unless-stopped # extra_hosts:
# - "somehost:162.242.195.82"
# 以上会在此服务的内部容器中 /etc/hosts 创建一个具有 ip 地址和主机名的映射关系:162.242.195.82 somehost
启动
所有内容准备好后,cmd命令行执行
docker-compose up -d
即可一键初始化所有容器,并自动数据初始化以及配置。

三.注意事项
1.docker-desktop启动的容器,应用访问其他容器,默认ip是:
172.17.0.1+映射后的端口 #根据实际情况修改应用
