Files
yunrui_asset/docker-compose.prod.yml
T
zhang1106 5e3998736d chore: 重构镜像仓库配置,支持多镜像源拉取
1. 更新env示例文件,默认使用ghcr.io镜像源,添加阿里云ACR切换说明
2. 完善生产环境docker-compose配置,增加镜像源注释和默认值
3. 重构CI工作流,支持同时推送镜像到阿里云ACR和ghcr.io
4. 更新部署文档,补充镜像仓库说明和多源切换指引
2026-06-16 12:36:39 +08:00

80 lines
2.3 KiB
YAML

# ============================================
# IDC 设备管理系统 - 生产环境配置
# 从镜像仓库拉取预构建镜像,无 build 指令
# 默认从 ghcr.io 拉取,可通过 BACKEND/FRONTEND_IMAGE 环境变量切换
# ============================================
version: '3.8'
services:
# ---------- 后端服务 ----------
backend:
# 从 ghcr.io 拉取公开镜像,可通过 BACKEND_IMAGE 环境变量覆盖
image: ${BACKEND_IMAGE:-ghcr.io/gituib/idc-backend:latest}
container_name: idc-backend
volumes:
# 配置映射(核心)
- ./backend/.env:/app/.env
# 数据持久化
- ./backend/uploads:/app/uploads
- ./backend/logs:/app/logs
- ./backend/backups:/app/backups
- ./backend/temp:/app/temp
env_file:
- ./backend/.env
environment:
- NODE_ENV=production
# 生产环境使用 Docker 内 MySQL 时,MYSQL_HOST 需设为 mysql
# 使用远程 MySQL 时,保持 .env 中的配置
networks:
- idc-network
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# ---------- 前端(Nginx)服务 ----------
frontend:
# 从 ghcr.io 拉取公开镜像,可通过 FRONTEND_IMAGE 环境变量覆盖
image: ${FRONTEND_IMAGE:-ghcr.io/gituib/idc-frontend:latest}
pull_policy: always
container_name: idc-frontend
ports:
- "80:80"
networks:
- idc-network
depends_on:
- backend
restart: unless-stopped
# ---------- MySQL 数据库 ----------
# 如需使用本地 MySQL 容器,取消下方注释
# mysql:
# image: mysql:8.0
# container_name: idc-mysql
# volumes:
# - mysql_data:/var/lib/mysql
# environment:
# MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
# MYSQL_DATABASE: ${MYSQL_DATABASE:-idc_management}
# MYSQL_USER: ${MYSQL_USER:-idc_user}
# MYSQL_PASSWORD: ${MYSQL_PASSWORD}
# networks:
# - idc-network
# restart: unless-stopped
# healthcheck:
# test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
# interval: 10s
# timeout: 5s
# retries: 5
networks:
idc-network:
driver: bridge
# volumes:
# mysql_data: