Files
thebet365/docker-compose.prod.yml
2026-06-13 17:38:25 +08:00

101 lines
2.1 KiB
YAML

# TheBet365 全栈生产部署
# 首次部署: ./scripts/deploy-first.sh
# 后续更新: ./scripts/deploy-update.sh
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:
image: thebet365-api:latest
build:
context: .
dockerfile: docker/api/Dockerfile
container_name: thebet365-api
env_file:
- .env.docker
environment:
DATABASE_URL: postgresql://thebet365:${POSTGRES_PASSWORD:-thebet365}@postgres:5432/thebet365
REDIS_URL: redis://redis:6379
PORT: 3000
NODE_ENV: production
UPLOAD_DIR: /app/uploads
volumes:
- uploads_data:/app/uploads
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
expose:
- '3000'
restart: unless-stopped
networks:
- thebet365
player:
image: thebet365-player:latest
build:
context: .
dockerfile: docker/player/Dockerfile
container_name: thebet365-player
depends_on:
- api
ports:
- '${PLAYER_PORT:-8082}:80'
restart: unless-stopped
networks:
- thebet365
admin:
image: thebet365-admin:latest
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: