Files
BuYuHouDuan/deploy/docker-compose.yml
2026-10-13 21:52:02 +08:00

152 lines
3.9 KiB
YAML

# ============================================================
# 捕鱼/棋牌平台 - 一键部署编排(4 个中间件 + 7 个应用服务)
#
# 启动:docker compose -f deploy/docker-compose.yml up -d
# 停止:docker compose -f deploy/docker-compose.yml down
# 日志:docker compose -f deploy/docker-compose.yml logs -f <服务名>
#
# 说明:
# 1. 所有容器在同一网络(webapi_default),相互通过容器名访问:
# mongo / redis / rabbitmq / pgsql / 0524gateway / 0524admin / ...
# 2. 应用容器内部监听 80 端口(见 deploy/Dockerfile),宿主机映射 524x / 8001
# 3. 网关的 ocelot.json 由 deploy.sh 在发布产物中改写为「容器名:80」的下游地址,
# 因此网关容器不需要 host 网络,跨平台可用
# 4. 日志挂载到 deploy/logs/<服务名>,上传文件挂载到 deploy/uploads/<服务名>
# ============================================================
name: webapi
services:
# ==================== 中间件 ====================
mongo:
image: mongo:6.0
container_name: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root23456
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
redis:
image: redis:7
container_name: redis
restart: always
command: ["redis-server", "--requirepass", "123456", "--appendonly", "yes"]
ports:
- "6379:6379"
volumes:
- redis-data:/data
rabbitmq:
image: rabbitmq:3.13-management
container_name: rabbitmq
restart: always
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: "123456"
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq-data:/var/lib/rabbitmq
pgsql:
image: postgres:16
container_name: pgsql
restart: always
environment:
POSTGRES_DB: data_0524
POSTGRES_USER: data_0524
POSTGRES_PASSWORD: "123456"
ports:
- "5432:5432"
volumes:
- pgsql-data:/var/lib/postgresql/data
# ==================== 应用服务 ====================
gateway:
image: 0524gateway
container_name: 0524gateway
restart: always
ports:
- "8001:80"
depends_on:
- admin
- user
- customer
- chess
- fishroom
- fishgame
volumes:
- ./logs/gateway:/app/logs
admin:
image: 0524admin
container_name: 0524admin
restart: always
ports:
- "5241:80"
depends_on: [mongo, redis, rabbitmq, pgsql]
volumes:
- ./logs/admin:/app/logs
- ./uploads/admin:/app/wwwroot/uploads
user:
image: 0524user
container_name: 0524user
restart: always
ports:
- "5245:80"
depends_on: [mongo, redis, rabbitmq, pgsql]
volumes:
- ./logs/user:/app/logs
- ./uploads/user:/app/wwwroot/uploads
customer:
image: 0524customer
container_name: 0524customer
restart: always
ports:
- "5247:80"
depends_on: [mongo, redis, rabbitmq, pgsql]
volumes:
- ./logs/customer:/app/logs
- ./uploads/customer:/app/wwwroot/uploads
chess:
image: 0524chess
container_name: 0524chess
restart: always
ports:
- "5242:80"
depends_on: [mongo, redis, rabbitmq, pgsql]
volumes:
- ./logs/chess:/app/logs
fishroom:
image: 0524fishroom
container_name: 0524fishroom
restart: always
ports:
- "5244:80"
depends_on: [mongo, redis, rabbitmq, pgsql]
volumes:
- ./logs/fishroom:/app/logs
fishgame:
image: 0524fishgame
container_name: 0524fishgame
restart: always
ports:
- "5248:80" # 与 Gateway/ocelot.json 保持一致(仓库内旧 compose 写的 5243 已废弃)
depends_on: [mongo, redis, rabbitmq, pgsql]
volumes:
- ./logs/fishgame:/app/logs
volumes:
mongo-data:
redis-data:
rabbitmq-data:
pgsql-data: