Files
xdrop/docker-compose.yml
T

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: