Files
Scoring-System/docker-compose.yml
爽哒哒 ba48894378
Some checks failed
Deploy to Server / deploy (push) Failing after 10m2s
fix: 修复 docker-compose.yml 格式错误,分离 volumes 和 services 配置
2026-03-19 00:20:57 +08:00

113 lines
2.8 KiB
YAML

version: '3.8'
services:
# PostgreSQL 数据库
scoring-db:
image: postgres:15-alpine
container_name: cywl-scoring-db
restart: always
environment:
- POSTGRES_DB=scoring_system
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
volumes:
- scoring_db_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- scoring_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
# 后端服务
scoring-backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: cywl-scoring-backend
restart: always
volumes:
- ./backend/media:/app/media
- ./backend/static:/app/static
ports:
- "8876:8876"
environment:
- DEBUG=False
- SECRET_KEY=${SECRET_KEY:-your-secret-key-change-this}
- DB_NAME=scoring_system
- DB_USER=postgres
- DB_PASSWORD=password
- DB_HOST=scoring-db
- DB_PORT=5432
- WECHAT_APPID=${WECHAT_APPID}
- WECHAT_SECRET=${WECHAT_SECRET}
- WECHAT_MCHID=${WECHAT_MCHID}
- WECHAT_API_KEY=${WECHAT_API_KEY}
- ALIYUN_ACCESS_KEY_ID=${ALIYUN_ACCESS_KEY_ID}
- ALIYUN_ACCESS_KEY_SECRET=${ALIYUN_ACCESS_KEY_SECRET}
- ALIYUN_OSS_ENDPOINT=${ALIYUN_OSS_ENDPOINT}
- ALIYUN_OSS_BUCKET_NAME=${ALIYUN_OSS_BUCKET_NAME}
- ALIYUN_TINGWU_APP_KEY=${ALIYUN_TINGWU_APP_KEY}
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
depends_on:
scoring-db:
condition: service_healthy
networks:
- scoring_network
healthcheck:
test: ["CMD", "python", "-c", "import requests; requests.get('http://localhost:8876/api/health/')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 前端服务 (Nginx)
scoring-frontend:
build:
context: ./frontend
dockerfile: Dockerfile
args:
- VITE_API_URL=/api
container_name: cywl-scoring-frontend
restart: always
ports:
- "80:80"
depends_on:
scoring-backend:
condition: service_healthy
networks:
- scoring_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 10s
retries: 3
# Nginx 反向代理 (可选,用于负载均衡和 SSL)
scoring-nginx:
image: nginx:alpine
container_name: cywl-scoring-nginx
restart: always
ports:
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/ssl:/etc/nginx/ssl:ro
depends_on:
- scoring-frontend
- scoring-backend
networks:
- scoring_network
profiles:
- ssl # 只在需要 SSL 时启动
volumes:
scoring_db_data:
networks:
scoring_network:
driver: bridge