Files
affiliate_dash/docker-compose.yml
T

90 lines
2.9 KiB
YAML

name: ${COMPOSE_PROJECT_NAME:-affiliate_dash}
services:
postgres:
image: ${POSTGRES_IMAGE:-docker.m.daocloud.io/library/postgres:16-alpine}
environment:
- POSTGRES_USER=${POSTGRES_USER:-affiliate}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-affiliate_dev_password}
- POSTGRES_DB=${POSTGRES_DB:-affiliate_dash}
- TZ=${TZ:-Asia/Shanghai}
- PGTZ=${TZ:-Asia/Shanghai}
command: ["postgres", "-c", "timezone=${TZ:-Asia/Shanghai}"]
ports:
- "${POSTGRES_PORT:-5432}:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: .
dockerfile: Dockerfile.backend
args:
GO_BUILDER_IMAGE: ${GO_BUILDER_IMAGE:-docker.m.daocloud.io/library/golang:1.26-alpine}
BACKEND_RUNTIME_IMAGE: ${BACKEND_RUNTIME_IMAGE:-docker.m.daocloud.io/library/alpine:3.22}
GOPROXY: ${GOPROXY:-https://goproxy.cn,direct}
GOSUMDB: ${GOSUMDB:-sum.golang.google.cn}
ALPINE_MIRROR: ${ALPINE_MIRROR:-https://mirrors.aliyun.com/alpine}
image: affiliate-backend:latest
ports:
- "8080:8080"
environment:
- PORT=8080
- TZ=${TZ:-Asia/Shanghai}
- JWT_SECRET=${JWT_SECRET}
- "DATABASE_URL=${DOCKER_DATABASE_URL:-postgres://${POSTGRES_USER:-affiliate}:${POSTGRES_PASSWORD:-affiliate_dev_password}@postgres:5432/${POSTGRES_DB:-affiliate_dash}?sslmode=disable&TimeZone=${TZ:-Asia/Shanghai}}"
- GIN_MODE=${GIN_MODE:-release}
- OPEN_API_KEY=${OPEN_API_KEY}
- OPEN_API_SECRET=${OPEN_API_SECRET}
- OPEN_SIGN_SKEW=${OPEN_SIGN_SKEW:-300}
- OPEN_API_DEBUG=${OPEN_API_DEBUG:-false}
- LOG_FILE=${LOG_FILE:-logs/app.log}
volumes:
- backend-data:/data
- ./logs:/app/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
depends_on:
postgres:
condition: service_healthy
caddy:
build:
context: .
dockerfile: Dockerfile.caddy
args:
NODE_BUILDER_IMAGE: ${NODE_BUILDER_IMAGE:-docker.m.daocloud.io/library/node:22-alpine}
CADDY_BASE_IMAGE: ${CADDY_BASE_IMAGE:-docker.m.daocloud.io/library/caddy:2-alpine}
NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmmirror.com}
ALPINE_MIRROR: ${ALPINE_MIRROR:-https://mirrors.aliyun.com/alpine}
image: affiliate-caddy:latest
ports:
- "80:80"
- "443:443"
environment:
- TZ=${TZ:-Asia/Shanghai}
volumes:
- caddy-data:/data
- caddy-config:/config
depends_on:
backend:
condition: service_healthy
restart: unless-stopped
volumes:
postgres-data:
name: ${POSTGRES_DATA_VOLUME:-affiliate_dash_postgres_data}
backend-data:
caddy-data:
caddy-config: