Files
MHXY_Web/docker-compose.yml
2025-12-22 23:51:21 +08:00

87 lines
2.0 KiB
YAML

version: '1.0'
services:
# 前端服务
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "80:80"
depends_on:
- backend
networks:
- mhxy_network
restart: unless-stopped
environment:
- NODE_ENV=production
# 后端服务
backend:
build:
context: ./backend
dockerfile: Dockerfile
ports:
- "3000:3000"
depends_on:
- database
networks:
- mhxy_network
restart: unless-stopped
environment:
- NODE_ENV=production
- PORT=3000
- HOST=0.0.0.0
- DB_HOST=database
- DB_PORT=5432
- DB_NAME=mhxy_web
- DB_USER=postgres
- DB_PASSWORD=postgres
# 以下环境变量需要根据实际情况在.env文件中配置
# - JWT_SECRET=your_jwt_secret_key_here
# - JWT_EXPIRES_IN=24h
# - GAME_API_URL=http://your_game_server_url/tool/http
# - GAME_PSK=THIS_IS_A_32_BYTE_FIXED_PSK!!!!!
volumes:
# 可选:挂载日志目录(如果需要)
# - ./backend/logs:/app/logs
# 可选:挂载环境变量文件(如果需要)
- ./backend/.env:/app/.env
# 数据库服务
database:
image: mysql:8.4
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-password}
- MYSQL_DATABASE=${DB_NAME:-mhxy_web}
- MYSQL_USER=${DB_USER:-root}
- MYSQL_PASSWORD=${DB_PASSWORD:-password}
volumes:
# 持久化数据库数据
- mysql_data:/var/lib/mysql
# 挂载初始化SQL脚本
- ./sql/init_mysql.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- mhxy_network
restart: unless-stopped
# 可选:配置健康检查
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u ${DB_USER:-root} -p${DB_PASSWORD:-password}"]
interval: 5s
timeout: 5s
retries: 5
# 网络配置
networks:
mhxy_network:
driver: bridge
name: mhxy_network
# 数据卷配置
volumes:
mysql_data:
driver: local
name: mhxy_mysql_data