Docker快速部署--docker-compose一键多容器应用编排部署
Docker Compose实现多容器一键部署解决方案 本文介绍了使用Docker Compose工具实现多容器应用程序一键部署的方法。通过docker-compose.yml文件配置Web服务器(Nginx)、数据库(MySQL)和SpringBoot应用服务,实现容器间的协同工作。文章详细说明了文件结构编排、环境变量设置、端口映射和卷挂载等关键配置项,并提供了完整的yml文件示例。该方法整合了
一.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: root
MYSQL_DATABASE: amequipment
TZ: Asia/Shanghai
volumes:
- ./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/mysql
restart: unless-stopped
wb-nginx:
image: nginx:latest
environment:
- TZ=Asia/Shanghai
container_name: wb-nginx
ports:
- "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.d
restart: unless-stopped
wb-api:
build:
context: ./api
dockerfile: Dockerfile #指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
environment:
- TZ=Asia/Shanghai
image: wb-api
container_name: wb-api
ports:
- "8081:8081"
volumes:
- ./api/logs:/logs
- ./api/config:/config
- ./nginx/images:/images
depends_on:
- wb-mysql
restart: 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+映射后的端口 #根据实际情况修改应用
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)