| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| services: |
| sub2api: |
| build: |
| context: .. |
| dockerfile: Dockerfile |
| container_name: sub2api-dev |
| restart: unless-stopped |
| ports: |
| - "${BIND_HOST:-127.0.0.1}:${SERVER_PORT:-8080}:8080" |
| volumes: |
| - ./data:/app/data |
| environment: |
| - AUTO_SETUP=true |
| - SERVER_HOST=0.0.0.0 |
| - SERVER_PORT=8080 |
| - SERVER_MODE=debug |
| - RUN_MODE=${RUN_MODE:-standard} |
| - DATABASE_HOST=postgres |
| - DATABASE_PORT=5432 |
| - DATABASE_USER=${POSTGRES_USER:-sub2api} |
| - DATABASE_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} |
| - DATABASE_DBNAME=${POSTGRES_DB:-sub2api} |
| - DATABASE_SSLMODE=disable |
| - REDIS_HOST=redis |
| - REDIS_PORT=6379 |
| - REDIS_PASSWORD=${REDIS_PASSWORD:-} |
| - REDIS_DB=${REDIS_DB:-0} |
| - ADMIN_EMAIL=${ADMIN_EMAIL:-admin@sub2api.local} |
| - ADMIN_PASSWORD=${ADMIN_PASSWORD:-} |
| - JWT_SECRET=${JWT_SECRET:-} |
| - TOTP_ENCRYPTION_KEY=${TOTP_ENCRYPTION_KEY:-} |
| - TZ=${TZ:-Asia/Shanghai} |
| depends_on: |
| postgres: |
| condition: service_healthy |
| redis: |
| condition: service_healthy |
| networks: |
| - sub2api-network |
| healthcheck: |
| test: ["CMD", "wget", "-q", "-T", "5", "-O", "/dev/null", "http://localhost:8080/health"] |
| interval: 30s |
| timeout: 10s |
| retries: 3 |
| start_period: 30s |
|
|
| postgres: |
| image: postgres:18-alpine |
| container_name: sub2api-postgres-dev |
| restart: unless-stopped |
| volumes: |
| - ./postgres_data:/var/lib/postgresql/data |
| environment: |
| - POSTGRES_USER=${POSTGRES_USER:-sub2api} |
| - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} |
| - POSTGRES_DB=${POSTGRES_DB:-sub2api} |
| - PGDATA=/var/lib/postgresql/data |
| - TZ=${TZ:-Asia/Shanghai} |
| networks: |
| - sub2api-network |
| healthcheck: |
| test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-sub2api} -d ${POSTGRES_DB:-sub2api}"] |
| interval: 10s |
| timeout: 5s |
| retries: 5 |
| start_period: 10s |
|
|
| redis: |
| image: redis:8-alpine |
| container_name: sub2api-redis-dev |
| restart: unless-stopped |
| volumes: |
| - ./redis_data:/data |
| command: > |
| sh -c ' |
| redis-server |
| --save 60 1 |
| --appendonly yes |
| --appendfsync everysec |
| ${REDIS_PASSWORD:+--requirepass "$REDIS_PASSWORD"}' |
| environment: |
| - TZ=${TZ:-Asia/Shanghai} |
| - REDISCLI_AUTH=${REDIS_PASSWORD:-} |
| networks: |
| - sub2api-network |
| healthcheck: |
| test: ["CMD", "redis-cli", "ping"] |
| interval: 10s |
| timeout: 5s |
| retries: 5 |
| start_period: 5s |
|
|
| networks: |
| sub2api-network: |
| driver: bridge |
|
|