feat: 添加 Docker 化部署配置与 CI/CD 自动化
- 新增后端 Dockerfile(Node.js 20 Alpine 基础镜像) - 新增前端 Dockerfile(多阶段构建:Vite build + Nginx) - 新增 Nginx 配置(serve 前端静态文件 + 反代 /api) - 新增 docker-compose.dev.yml 和 docker-compose.prod.yml - 新增 GitHub Actions 工作流(自动构建推送阿里云镜像) - 新增 .dockerignore 排除不需要的文件 - 新增部署方案文档
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# ============================================
|
||||
# IDC 设备管理系统 - 生产环境配置
|
||||
# 从镜像仓库拉取预构建镜像,无 build 指令
|
||||
# ============================================
|
||||
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# ---------- 后端服务 ----------
|
||||
backend:
|
||||
# 从镜像仓库拉取,需替换为实际的镜像名
|
||||
image: ${BACKEND_IMAGE:-your-registry/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:
|
||||
image: ${FRONTEND_IMAGE:-your-registry/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:
|
||||
Reference in New Issue
Block a user