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,81 @@
|
||||
# ============================================
|
||||
# IDC 设备管理系统 - 开发环境配置
|
||||
# 使用 build 指令本地构建镜像
|
||||
# ============================================
|
||||
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# ---------- 后端服务 ----------
|
||||
backend:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: idc-backend-dev
|
||||
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=development
|
||||
# 连接 docker-compose 内的 MySQL 时,注释掉下方 MYSQL_HOST 的注释
|
||||
# 连接远程 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:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
container_name: idc-frontend-dev
|
||||
ports:
|
||||
- "80:80"
|
||||
networks:
|
||||
- idc-network
|
||||
depends_on:
|
||||
- backend
|
||||
restart: unless-stopped
|
||||
|
||||
# ---------- MySQL 数据库 ----------
|
||||
# 如需使用本地 MySQL 容器,取消下方注释
|
||||
# mysql:
|
||||
# image: mysql:8.0
|
||||
# container_name: idc-mysql-dev
|
||||
# volumes:
|
||||
# - mysql_data:/var/lib/mysql
|
||||
# environment:
|
||||
# MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123}
|
||||
# MYSQL_DATABASE: idc_management
|
||||
# MYSQL_USER: idc_user
|
||||
# MYSQL_PASSWORD: ${MYSQL_PASSWORD:-idc_pass}
|
||||
# ports:
|
||||
# - "3306:3306"
|
||||
# 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