Files
thebet365/docker-compose.prod.yml
Mars e52cac7444 feat(deploy): add Docker full-stack deployment and server pack scripts
Enable one-click production deploy via docker-compose.prod.yml, with deployment docs and zip packaging for Baota upload.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 16:24:06 +08:00

101 lines
2.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TheBet365 全栈生产部署
# 一键启动: docker compose -f docker-compose.prod.yml up -d --build
# 首次部署建议 SEED_DATABASE=true见 .env.docker
services:
postgres:
image: postgres:16-alpine
container_name: thebet365-postgres
environment:
POSTGRES_USER: thebet365
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-thebet365}
POSTGRES_DB: thebet365
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U thebet365']
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
networks:
- thebet365
redis:
image: redis:7-alpine
container_name: thebet365-redis
volumes:
- redis_data:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- thebet365
api:
build:
context: .
dockerfile: docker/api/Dockerfile
container_name: thebet365-api
environment:
DATABASE_URL: postgresql://thebet365:${POSTGRES_PASSWORD:-thebet365}@postgres:5432/thebet365
REDIS_URL: redis://redis:6379
JWT_SECRET: ${JWT_SECRET:-change-me-in-production-use-long-random-string}
JWT_PLAYER_EXPIRES: ${JWT_PLAYER_EXPIRES:-24h}
JWT_ADMIN_EXPIRES: ${JWT_ADMIN_EXPIRES:-2h}
JWT_AGENT_EXPIRES: ${JWT_AGENT_EXPIRES:-8h}
PORT: 3000
NODE_ENV: production
UPLOAD_DIR: /app/uploads
SEED_DATABASE: ${SEED_DATABASE:-false}
volumes:
- uploads_data:/app/uploads
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
ports:
- '${API_PORT:-3000}:3000'
restart: unless-stopped
networks:
- thebet365
player:
build:
context: .
dockerfile: docker/player/Dockerfile
container_name: thebet365-player
depends_on:
- api
ports:
- '${PLAYER_PORT:-8080}:80'
restart: unless-stopped
networks:
- thebet365
admin:
build:
context: .
dockerfile: docker/admin/Dockerfile
container_name: thebet365-admin
depends_on:
- api
ports:
- '${ADMIN_PORT:-8081}:80'
restart: unless-stopped
networks:
- thebet365
networks:
thebet365:
name: thebet365
volumes:
postgres_data:
redis_data:
uploads_data: