82 lines
2.3 KiB
YAML
82 lines
2.3 KiB
YAML
services:
|
|
# Combined backend API + frontend static files
|
|
app:
|
|
build: .
|
|
ports:
|
|
- "${PORT:-8080}:8080"
|
|
environment:
|
|
- TZ=${TZ:-America/New_York}
|
|
- DATABASE_URL=postgresql://gdl:${DB_PASSWORD}@db:5432/gallery_subscriber
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- DOWNLOAD_PATH=/data/downloads
|
|
- CONFIG_PATH=/data/config
|
|
- COOKIES_PATH=/data/cookies
|
|
- DOWNLOAD_PARALLEL_LIMIT=${DOWNLOAD_PARALLEL_LIMIT:-3}
|
|
- DOWNLOAD_RATE_LIMIT=${DOWNLOAD_RATE_LIMIT:-3.0}
|
|
- DEFAULT_CHECK_INTERVAL=${DEFAULT_CHECK_INTERVAL:-3600}
|
|
volumes:
|
|
- downloads:/data/downloads
|
|
- config:/data/config
|
|
- cookies:/data/cookies
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
restart: unless-stopped
|
|
|
|
# Celery worker for background tasks
|
|
celery:
|
|
build: .
|
|
command: celery -A app.tasks.celery_app worker -B --loglevel=info
|
|
environment:
|
|
- TZ=${TZ:-America/New_York}
|
|
- DATABASE_URL=postgresql://gdl:${DB_PASSWORD}@db:5432/gallery_subscriber
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- DOWNLOAD_PATH=/data/downloads
|
|
- CONFIG_PATH=/data/config
|
|
- COOKIES_PATH=/data/cookies
|
|
- DOWNLOAD_PARALLEL_LIMIT=${DOWNLOAD_PARALLEL_LIMIT:-3}
|
|
- DOWNLOAD_RATE_LIMIT=${DOWNLOAD_RATE_LIMIT:-3.0}
|
|
- DEFAULT_CHECK_INTERVAL=${DEFAULT_CHECK_INTERVAL:-3600}
|
|
volumes:
|
|
- downloads:/data/downloads
|
|
- config:/data/config
|
|
- cookies:/data/cookies
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
restart: unless-stopped
|
|
|
|
# PostgreSQL database
|
|
db:
|
|
image: postgres:15-alpine
|
|
environment:
|
|
- TZ=${TZ:-America/New_York}
|
|
- POSTGRES_USER=gdl
|
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
|
- POSTGRES_DB=gallery_subscriber
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U gdl -d gallery_subscriber"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
|
|
# Redis for Celery task queue
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
postgres_data:
|
|
downloads:
|
|
config:
|
|
cookies:
|