version: "3.9" services: postgres: image: postgres:14.10-alpine environment: - POSTGRES_LOGGING=true - POSTGRES_DB_FILE=/run/secrets/postgres_db - POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password - POSTGRES_USER_FILE=/run/secrets/postgres_user secrets: - postgres_password - postgres_user - postgres_db ports: - ${POSTGRES_PORT:-5432}:5432 volumes: - postgres:/var/lib/postgresql/data restart: on-failure healthcheck: # Use pg_isready to check postgres is running. Substitute different # user `postgres` if you've setup differently to config/pgpass-mainnet test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 command: ${POSTGRES_ARGS:--c maintenance_work_mem=1GB -c max_parallel_maintenance_workers=4} logging: driver: "json-file" options: max-size: "200k" max-file: "10" cardano-node: image: ghcr.io/intersectmbo/cardano-node:8.12.2 environment: - NETWORK=${NETWORK:-mainnet} volumes: - node-db:/data/db - node-ipc:/ipc restart: on-failure healthcheck: # Ping the EKG port to see if it responds. # Assuming if EKG isn't up then the rest of cardano-node isn't either. test: ["CMD-SHELL", "curl -f 127.0.0.1:12788 || exit 1"] interval: 60s timeout: 10s retries: 5 logging: driver: "json-file" options: max-size: "200k" max-file: "10" cardano-db-sync: image: ghcr.io/intersectmbo/cardano-db-sync:13.3.0.0 environment: - DISABLE_LEDGER=${DISABLE_LEDGER} - NETWORK=${NETWORK:-mainnet} - POSTGRES_HOST=postgres - POSTGRES_PORT=5432 - RESTORE_SNAPSHOT=${RESTORE_SNAPSHOT:-} - RESTORE_RECREATE_DB=N - EXTRA_DB_SYNC_ARGS=${EXTRA_DB_SYNC_ARGS:-} depends_on: # Depend on both services to be healthy before starting. cardano-node: condition: service_healthy postgres: condition: service_healthy secrets: - postgres_password - postgres_user - postgres_db volumes: - db-sync-data:/var/lib/cexplorer - node-ipc:/node-ipc restart: on-failure logging: driver: "json-file" options: max-size: "200k" max-file: "10" secrets: postgres_db: file: ./config/secrets/postgres_db postgres_password: file: ./config/secrets/postgres_password postgres_user: file: ./config/secrets/postgres_user volumes: db-sync-data: postgres: node-db: node-ipc: