87 lines
2.0 KiB
YAML
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
|