# KeepItGoing - Self-Hosted Docker Compose Configuration # Usage: docker-compose up -d version: '3.8' services: db: image: postgres:16-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: keepitgoing POSTGRES_USER: keepitgoing POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-keepitgoing} healthcheck: test: ["CMD-SHELL", "pg_isready -U keepitgoing"] interval: 5s timeout: 5s retries: 5 redis: image: redis:7-alpine volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 web: build: . ports: - "8000:8000" environment: DJANGO_ENV: selfhosted SECRET_KEY: ${SECRET_KEY:-change-this-in-production} ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost,127.0.0.1} POSTGRES_DB: keepitgoing POSTGRES_USER: keepitgoing POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-keepitgoing} POSTGRES_HOST: db POSTGRES_PORT: 5432 REDIS_URL: redis://redis:6379/0 depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - static_files:/app/staticfiles - media_files:/app/media celery: build: . command: celery -A config worker -l info environment: DJANGO_ENV: selfhosted SECRET_KEY: ${SECRET_KEY:-change-this-in-production} POSTGRES_DB: keepitgoing POSTGRES_USER: keepitgoing POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-keepitgoing} POSTGRES_HOST: db POSTGRES_PORT: 5432 REDIS_URL: redis://redis:6379/0 depends_on: db: condition: service_healthy redis: condition: service_healthy celery-beat: build: . command: celery -A config beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler environment: DJANGO_ENV: selfhosted SECRET_KEY: ${SECRET_KEY:-change-this-in-production} POSTGRES_DB: keepitgoing POSTGRES_USER: keepitgoing POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-keepitgoing} POSTGRES_HOST: db POSTGRES_PORT: 5432 REDIS_URL: redis://redis:6379/0 depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: postgres_data: redis_data: static_files: media_files: