services: postgres: image: postgres:16@sha256:ca0bd484cb98bf4b24eb1010e73fb3fcbd6714d240fbc1a10eea5b7dbecb641d environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: pgrestoredrill ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d pgrestoredrill"] interval: 5s timeout: 5s retries: 12 target: image: postgres:16@sha256:ca0bd484cb98bf4b24eb1010e73fb3fcbd6714d240fbc1a10eea5b7dbecb641d environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - "5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"] interval: 5s timeout: 5s retries: 12 silo: image: pgsty/silo:RELEASE.2026-09-16T00-00-00Z@sha256:635197cb9f36d01bee221d34d1c7d7960f6a95c48b0b6c01d99cd13bdae51a46 command: ["server", "/data"] environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin ports: - "9000:9000" healthcheck: test: ["CMD", "silo", "healthcheck", "ready"] interval: 5s timeout: 5s retries: 20 start_period: 5s migrate: build: . image: pgrestoredrill:local environment: DATABASE_URL: postgresql://postgres:postgres@postgres:5432/pgrestoredrill TARGET_URL: postgresql://postgres:postgres@target:5432/postgres LOG_LEVEL: INFO command: ["alembic", "upgrade", "head"] restart: "no" depends_on: postgres: condition: service_healthy api: build: . image: pgrestoredrill:local environment: DATABASE_URL: postgresql://postgres:postgres@postgres:5432/pgrestoredrill TARGET_URL: postgresql://postgres:postgres@target:5432/postgres TARGET_KIND: external LOG_LEVEL: INFO ADMIN_TOKEN: replace-me ports: - "8000:8000" depends_on: migrate: condition: service_completed_successfully load-fixture: profiles: ["drill"] image: pgrestoredrill:local command: - python - -m - pgrestoredrill.fixtureload - --dump - /dumps/sample.dump - --endpoint - http://silo:9000 - --access-key - minioadmin - --secret-key - minioadmin volumes: - ./tests/fixtures/dumps:/dumps:ro restart: "no" depends_on: silo: condition: service_healthy drill: profiles: ["drill"] image: pgrestoredrill:local environment: DATABASE_URL: postgresql://postgres:postgres@postgres:5432/pgrestoredrill TARGET_URL: postgresql://postgres:postgres@target:5432/postgres TARGET_KIND: external LOG_LEVEL: INFO S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin command: ["pgrestoredrill", "run", "--config", "/drill/drill.yaml"] volumes: - ./examples/compose-drill.yaml:/drill/drill.yaml:ro - ./examples/assertions.yaml:/drill/assertions.yaml:ro restart: "no" depends_on: migrate: condition: service_completed_successfully target: condition: service_healthy load-fixture: condition: service_completed_successfully