# docker-compose.advanced-partitioning.yml # # This file extends the base compose.yml to set up an environment # for testing advanced partitioning with pg_partman. # # To use, run: # docker compose -f compose.yml -f compose.partman.yml up --build # Define anchors that are referenced within this file to make it self-contained. # These values will be merged with/override the base compose file's values. x-environment: &default-environment DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres SECRET_KEY: change_me ENABLE_ORGANIZATION_CREATION: "true" ENABLE_TEST_API: "true" DEBUG: "true" EMAIL_BACKEND: "django.core.mail.backends.console.EmailBackend" ENABLE_OBSERVABILITY_API: "true" CELERY_WORKER_CONCURRENCY: 4 CELERY_WORKER_PREFETCH_MULTIPLIER: 25 CELERY_WORKER_POOL: "threads" CELERY_SKIP_CHECKS: "true" x-volumes: &default-volumes - .:/code services: postgres: image: ghcr.io/dbsystel/postgresql-partman:18 environment: # This image requires this environment variable to work without a password. ALLOW_EMPTY_PASSWORD: "yes" # This is inherited from the base compose file but included for clarity. POSTGRES_HOST_AUTH_METHOD: "trust" web: environment: # This inherits all variables from the &default-environment anchor # and adds our new flag. <<: *default-environment GLITCHTIP_ADVANCED_PARTITIONING: "true" worker: # Also extend the worker's environment so it's aware of the setting. environment: <<: *default-environment GLITCHTIP_ADVANCED_PARTITIONING: "true" partman-setup: build: . user: root depends_on: # This dependency ensures migrations (run via the web or manually) # have likely completed before this command runs. web: condition: service_started volumes: *default-volumes environment: <<: *default-environment GLITCHTIP_ADVANCED_PARTITIONING: "true" # This command will wait 15 seconds for migrations to apply, then run your setup command. # In a CI/CD environment, you might use a more robust wait-for-it script. command: > bash -c "echo 'Waiting for migrations to apply...' && sleep 5 && echo 'Running pg_partman setup command...' && python manage.py setup_advanced_partitions"