Docker Compose 一键部署
作者:唐亚峰 | battcn
字数统计:1.2k 字
学习目标
使用 Docker Compose 一键部署 Wemirr Platform 所需的全部中间件环境
什么是 Docker Compose?
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件配置所有服务,然后一条命令即可创建并启动所有服务。
快速开始
0. 先准备 Docker 网络(必做)
Wemirr 仓库提供的 docker-compose.yml 默认使用外部网络 wemirr,因此需要提前创建:
bash
docker network create wemirr1. 创建项目目录
bash
mkdir -p ~/wemirr/docker
cd ~/wemirr/docker2. 直接使用仓库自带 docker-compose.yml(推荐)
Wemirr 后端仓库已经提供了可用的中间件编排文件(并且与项目配置保持一致):
- 文件路径:
wemirr-platform/附件/docker/docker-compose.yml
你可以直接复制到本机某个目录运行,也可以在仓库目录直接运行。
版本对齐(非常重要)
该编排文件当前使用的镜像版本:
| 组件 | 镜像 | 版本 |
|---|---|---|
| MySQL | mysql | 8.0.19 |
| Redis | redis | 5.0 |
| Nacos | nacos/nacos-server | 2.4.2 |
| RabbitMQ | docker.io/macintoshplus/rabbitmq-management | 镜像未固定 tag(以仓库为准) |
文档后续所有示例均以此为准,避免出现“文档能跑,代码跑不了 / 代码能跑,文档版本不对”的问题。
3. 启动服务
bash
# 启动所有服务(后台运行)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看服务日志
docker-compose logs -f
# 查看指定服务日志
docker-compose logs -f nacos4. 初始化数据与配置
- 数据库初始化脚本:
wemirr-platform/附件/mysql/ - Nacos 配置包:
wemirr-platform/附件/nacos/
数据库初始化与 Nacos 导入在 快速上手 已给出操作步骤,此处不重复。
5. 验证服务
| 服务 | 地址 | 账号/密码 |
|---|---|---|
| MySQL | localhost:3306 | root / 123456 |
| Redis | localhost:6379 | 默认无密码(以 附件/docker/docker-compose.yml 为准) |
| Nacos | http://localhost:8848/nacos | nacos / nacos |
| RabbitMQ | http://localhost:15672 | 镜像默认账号密码(以镜像说明为准) |
常用命令
服务管理
bash
# 启动所有服务
docker-compose up -d
# 停止所有服务
docker-compose stop
# 停止并删除所有服务
docker-compose down
# 停止并删除服务+数据卷(危险!会删除数据)
docker-compose down -v
# 重启所有服务
docker-compose restart
# 重启指定服务
docker-compose restart nacos
# 重新构建并启动
docker-compose up -d --build端口与健康检查(建议你自己先核对)
| 组件 | 端口 | 说明 |
|---|---|---|
| MySQL | 3306 | root/123456 |
| Redis | 6379 | 默认无密码(以仓库 compose 为准) |
| Nacos | 8848/9848/9849 | 控制台/GRPC |
| RabbitMQ | 5671/5672/15672/25672 | AMQP/管理台 |
日志查看
bash
# 查看所有服务日志
docker-compose logs
# 实时查看日志
docker-compose logs -f
# 查看指定服务日志
docker-compose logs -f mysql nacos
# 查看最近100行日志
docker-compose logs --tail=100 mysql服务扩缩容
bash
# 扩展服务实例数
docker-compose up -d --scale service-name=3开发环境配置
最小配置(必需)
仅包含必需的中间件:
yaml
version: '3.8'
networks:
wemirr:
driver: bridge
services:
mysql:
image: mysql:8.0
container_name: wemirr-mysql
networks:
- wemirr
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
restart: always
redis:
image: redis:7-alpine
container_name: wemirr-redis
networks:
- wemirr
ports:
- "6379:6379"
restart: always
nacos:
image: nacos/nacos-server:v2.3.0
container_name: wemirr-nacos
networks:
- wemirr
ports:
- "8848:8848"
- "9848:9848"
environment:
- MODE=standalone
restart: always完整配置(推荐)
包含所有可选中间件,参考上面的完整 docker-compose.yml。
环境变量配置
创建 .env 文件管理环境变量:
bash
# .env
MYSQL_ROOT_PASSWORD=your_secure_password
REDIS_PASSWORD=your_redis_password
NACOS_AUTH_TOKEN=your_secure_token_at_least_32_chars
MINIO_ROOT_USER=minio_admin
MINIO_ROOT_PASSWORD=minio_secure_password
RABBITMQ_USER=rabbit_admin
RABBITMQ_PASSWORD=rabbit_secure_password在 docker-compose.yml 中引用:
yaml
services:
mysql:
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}数据持久化
使用命名卷(推荐)
yaml
volumes:
mysql-data:
redis-data:
services:
mysql:
volumes:
- mysql-data:/var/lib/mysql仓库自带 compose 目前未挂载 Volume
wemirr-platform/附件/docker/docker-compose.yml 以“开箱即用”为主,默认未挂载数据卷。
如果你用于长期开发环境,建议你在本地 copy 一份 compose 并增加 volume 挂载,避免容器删除导致数据丢失。
使用本地目录
yaml
services:
mysql:
volumes:
- ./data/mysql:/var/lib/mysql故障排查
服务启动失败
bash
# 查看失败原因
docker-compose logs service-name
# 检查容器状态
docker-compose ps -a
# 进入容器调试
docker-compose exec service-name sh经典错误:network wemirr not found
原因:未创建外部网络 wemirr。
解决:
bash
docker network create wemirr
docker-compose up -dNacos 启动失败
常见原因:MySQL 未就绪
bash
# 先单独启动 MySQL
docker-compose up -d mysql
# 等待 MySQL 就绪后再启动 Nacos
docker-compose up -d nacos端口冲突
bash
# 检查端口占用
lsof -i:3306
lsof -i:8848
# 修改 docker-compose.yml 中的端口映射
ports:
- "13306:3306" # 改为 13306