87 lines
2.0 KiB
YAML
87 lines
2.0 KiB
YAML
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: xdrop
|
|
POSTGRES_USER: xdrop
|
|
POSTGRES_PASSWORD: xdrop
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U xdrop -d xdrop']
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 12
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
volumes:
|
|
- redis-data:/data
|
|
healthcheck:
|
|
test: ['CMD', 'redis-cli', 'ping']
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 12
|
|
|
|
minio:
|
|
image: minio/minio:latest
|
|
restart: unless-stopped
|
|
command: server /data --console-address :9001
|
|
environment:
|
|
MINIO_ROOT_USER: minioadmin
|
|
MINIO_ROOT_PASSWORD: minioadmin
|
|
ports:
|
|
- '9000:9000'
|
|
- '9001:9001'
|
|
volumes:
|
|
- minio-data:/data
|
|
|
|
minio-setup:
|
|
image: minio/mc:latest
|
|
depends_on:
|
|
- minio
|
|
environment:
|
|
MINIO_ROOT_USER: minioadmin
|
|
MINIO_ROOT_PASSWORD: minioadmin
|
|
S3_BUCKET: xdrop
|
|
volumes:
|
|
- ./infra/minio/init.sh:/init.sh:ro
|
|
entrypoint: ['/bin/sh', '/init.sh']
|
|
|
|
xdrop:
|
|
image: ${XDROP_IMAGE:-ghcr.io/xixu-me/xdrop:latest}
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
minio-setup:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
API_ADDR: :8080
|
|
DATABASE_URL: postgres://xdrop:xdrop@postgres:5432/xdrop?sslmode=disable
|
|
REDIS_ADDR: redis:6379
|
|
REDIS_PASSWORD:
|
|
REDIS_DB: 0
|
|
S3_ENDPOINT: http://minio:9000
|
|
S3_PUBLIC_ENDPOINT: http://localhost:8080
|
|
S3_REGION: us-east-1
|
|
S3_BUCKET: xdrop
|
|
S3_ACCESS_KEY: minioadmin
|
|
S3_SECRET_KEY: minioadmin
|
|
S3_USE_SSL: 'false'
|
|
ALLOWED_ORIGINS: http://localhost:8080
|
|
PRESIGN_TTL_SECONDS: 300
|
|
DEFAULT_EXPIRY_SECONDS: 3600
|
|
CLEANUP_INTERVAL: 2m
|
|
ports:
|
|
- '8080:80'
|
|
|
|
volumes:
|
|
postgres-data:
|
|
redis-data:
|
|
minio-data:
|