一、介绍
由于业务服务依赖 MySQL 等环境依赖,所以需要拆分 2 套 Docker Compose 的配置文件,分别为 docker-compose.env.yml 环境配置和 docker-compose.service.yml 业务服务配置,保证先成功启动依赖,再启动服务。depends_on配置,也能决定服务的启动顺序。但是千万注意,depends_on 并不会等待服务完全就绪,只是确保它们在启动时的顺序,并不稳定。
二、示例
docker-compose.env.yml。
version: '3'
services:
mysql:
image: mysql:8 # 使用的镜像
container_name: yuoj-mysql # 启动的实例名称
environment:
MYSQL_ROOT_PASSWORD: root # root 用户密码
ports:
- "3306:3306" # 端口映射
volumes:
- ./.mysql-data:/var/lib/mysql # 将数据目录挂载到本地目录以进行持久化
- ./mysql-init:/docker-entrypoint-initdb.d # 启动脚本
restart: always # 崩溃后自动重启
networks:
- mynetwork # 指定网络
redis:
image: redis:6
container_name: yuoj-redis
ports:
- "6379:6379"
networks:
- mynetwork
volumes:
- ./.redis-data:/data # 持久化
rabbitmq:
image: rabbitmq:3.12.6-management # 支持管理面板的消息队列
container_name: yuoj-rabbitmq
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- "5672:5672"
- "15672:15672" # RabbitMQ Dashboard 端口
volumes:
- ./.rabbitmq-data:/var/lib/rabbitmq # 持久化
networks:
- mynetwork
nacos:
image: nacos/nacos-server:v2.2.0-slim
container_name: yuoj-nacos
ports:
- "8848:8848"
volumes:
- ./.nacos-data:/home/nacos/data
networks:
- mynetwork
environment:
- MODE=standalone # 单节点模式启动
- PREFER_HOST_MODE=hostname # 支持 hostname
- TZ=Asia/Shanghai # 控制时区