简介:整理自:SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)课程的飞书文档。
DockerCompose介绍
大家可以看到,我们部署一个简单的java项目,其中包含3个容器:
- MySQL
- Nginx
- Java项目
而稍微复杂的项目,其中还会有各种各样的其它中间件,需要部署的东西远不止3个。如果还像之前那样手动的逐一部署,就太麻烦了。
而Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署 。它允许用户通过一个单独的 **docker-compose.yml 模板文件(YAML 格式)**来定义一组相关联的应用容器。
docker-compose.yml文件的基本语法可以参考官方文档:
https://docs.docker.com/reference/compose-file/legacy-versions/
手动部署与DockerCompose部署对比
DockerCompose常见命令
DockerCompose部署步骤
1、首先保证虚拟机的root目录下有如下文件及对应的配置文件
放入哪些文件见文章:https://blog.csdn.net/weixin_62818371/article/details/143089135
2、将docker-compose.yml部署文件放入虚拟机的root目录下
注意点:
①、container_name: hm:Java应用容器名需要与nginx的nginx.conf配置里的容器名保持一致。
bash
networks:
hm-net:
name: hmall
②、hm-net 是一个网络的标识符,用于在 Docker Compose 文件中引用和管理这个网络;这个标识符是局部的,仅在当前 Docker Compose 文件中有效。
③、name: hmall 是这个网络在 Docker 主机上的 实际名称。当 Docker 创建这个网络时,它将被命名为 hmall;这个名称是全局的,影响到 Docker 主机上网络的管理和识别。
docker-compose.yml示例文件:
bash
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: hm
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: hmall
3、DockerCompose一键部署
在执行命令去需要把会产生冲突的所有镜像和容器清除
bash
# 启动所有, -d 参数是后台启动
docker compose up -d
# 查看容器
docker compose ps
如果要撤回一键部署,执行以下命令:
bash
# 停止并移除所有容器、网络
docker compose down
4、浏览器测试是否成功
测试具体操作见文章:https://blog.csdn.net/weixin_62818371/article/details/143089135