Docker Compose 多服务启动及单独启动指南
你需要一个能同时启动 PostgreSQL、MySQL、Redis、消息队列(我选用常用的 RabbitMQ 作为 MQ 实现)和 MinIO 的 Docker Compose 配置文件,并且想知道如何单独启动其中某一个服务。
一、完整的 Docker Compose 配置文件
我为你编写了一份开箱即用的 docker-compose.yml 文件,包含了所有你需要的服务,并做了基础的配置(如密码、端口映射、数据持久化等),方便你直接使用:
YAML
version: '3.8'
# 定义所有服务
services:
# PostgreSQL 服务
postgres:
image: postgres:16-alpine
container_name: my-postgres
ports:
- "5432:5432" # 宿主机端口:容器端口
environment:
POSTGRES_USER: root # 用户名
POSTGRES_PASSWORD: 123456 # 密码
POSTGRES_DB: mydb # 初始化数据库
TZ: Asia/Shanghai # 时区
volumes:
- postgres-data:/var/lib/postgresql/data # 数据持久化
restart: unless-stopped # 容器退出时除非手动停止,否则自动重启
networks:
- my-network
# MySQL 服务
mysql:
image: mysql:8.0
container_name: my-mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456 # root 密码
MYSQL_DATABASE: mydb # 初始化数据库
TZ: Asia/Shanghai
volumes:
- mysql-data:/var/lib/mysql # 数据持久化
command: --default-authentication-plugin=mysql_native_password # 兼容旧客户端
restart: unless-stopped
networks:
- my-network
# Redis 服务
redis:
image: redis:7-alpine
container_name: my-redis
ports:
- "6379:6379"
environment:
TZ: Asia/Shanghai
volumes:
- redis-data:/data # 数据持久化
command: redis-server --requirepass 123456 # 设置密码
restart: unless-stopped
networks:
- my-network
# RabbitMQ (MQ) 服务
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: my-rabbitmq
ports:
- "5672:5672" # AMQP 协议端口
- "15672:15672" # 管理后台端口
environment:
RABBITMQ_DEFAULT_USER: root
RABBITMQ_DEFAULT_PASS: 123456
TZ: Asia/Shanghai
volumes:
- rabbitmq-data:/var/lib/rabbitmq
restart: unless-stopped
networks:
- my-network
# MinIO 服务
minio:
image: minio/minio:latest
container_name: my-minio
ports:
- "9000:9000" # API 端口
- "9001:9001" # 控制台端口
environment:
MINIO_ROOT_USER: root
MINIO_ROOT_PASSWORD: 12345678 # MinIO 密码要求至少8位
TZ: Asia/Shanghai
volumes:
- minio-data:/data # 存储数据持久化
command: server /data --console-address ":9001" # 指定控制台端口
restart: unless-stopped
networks:
- my-network
# 定义数据卷(持久化存储)
volumes:
postgres-data:
mysql-data:
redis-data:
rabbitmq-data:
minio-data:
# 定义自定义网络(让服务之间可以互相访问)
networks:
my-network:
driver: bridge二、使用说明
1. 前置条件
已安装 Docker 和 Docker Compose(Docker Compose V2 推荐,V1 也兼容)。
将上述配置文件保存为
docker-compose.yml,放在任意目录(比如docker-services)。
2. 启动所有服务
进入配置文件所在目录,执行以下命令:
Bash
# 前台启动(可看到日志,按 Ctrl+C 停止)
docker compose up
# 后台启动(推荐)
docker compose up -d3. 单独启动某一个服务
格式:docker compose up -d [服务名],服务名对应配置文件中 services 下的名称(如 postgres、mysql 等)。
示例:
Bash
# 只启动 Redis 服务(后台运行)
docker compose up -d redis
# 只启动 MySQL 服务(后台运行)
docker compose up -d mysql
# 只启动 RabbitMQ 服务(后台运行)
docker compose up -d rabbitmq4. 其他常用命令
Bash
# 查看已启动的服务状态
docker compose ps
# 停止所有服务(保留容器)
docker compose stop
# 停止某个服务
docker compose stop redis
# 停止并删除容器(数据卷不会删除,数据保留)
docker compose down
# 查看某个服务的日志
docker compose logs -f redis # -f 实时查看日志
# 进入某个服务的容器(比如进入MySQL容器)
docker compose exec mysql bash三、各服务访问信息
| 服务 | 访问地址 | 用户名 | 密码 | 备注 |
|---|---|---|---|---|
| PostgreSQL | :5432 | root | 123456 | 初始数据库:mydb |
| MySQL | :3306 | root | 123456 | 初始数据库:mydb |
| Redis | :6379 | 无 | 123456 | 密码通过 requirepass 设置 |
| RabbitMQ | 控制台::15672 | root | 123456 | AMQP 端口:5672 |
| MinIO | 控制台::9001 | root | 12345678 | API 端口:9000 |
总结
核心配置文件
docker-compose.yml包含了 PostgreSQL、MySQL、Redis、RabbitMQ(MQ)、MinIO 五大服务,均做了数据持久化和基础安全配置。单独启动服务的核心命令是
docker compose up -d [服务名](服务名对应配置文件中的postgres/mysql/redis/rabbitmq/minio)。数据卷(volumes)保证了服务停止/删除后数据不丢失,自定义网络让服务之间可通过容器名互相访问(比如 Redis 容器内可访问
mysql:3306)。
如果需要修改端口、密码等配置,直接编辑 docker-compose.yml 中的对应字段即可,修改后重启服务生效。
(注:文档部分内容可能由 AI 生成)