volumes: ddon-psql-data: networks: ddon-psql-net: services: db: container_name: db image: postgres:17 ports: - "5432:5432" restart: no networks: - ddon-psql-net volumes: - ddon-psql-data:/var/lib/postgresql/data # - ./schema_postgres.sql:/docker-entrypoint-initdb.d/schema_postgres.sql:ro - ./postgresql.conf:/etc/postgresql/postgresql.conf:ro environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=postgres - POSTGRES_INITDB_ARGS=--auth=scram-sha-256 --lc-numeric=en_US.UTF-8 command: postgres -c config_file=/etc/postgresql/postgresql.conf healthcheck: test: ["CMD-SHELL", "pg_isready", "-d", "postgres"] interval: 10s timeout: 1s retries: 3 db-migrate: image: postgres:17-alpine depends_on: - db networks: - ddon-psql-net volumes: - ./postgres-specific-migration.sql:/postgres-specific-migration.sql:ro entrypoint: ["/bin/sh", "-c"] command: - > until pg_isready -h db -U postgres; do echo "waiting for db…"; sleep 2; done; psql -h db -U postgres -d postgres -f /postgres-specific-migration.sql; environment: PGPASSWORD: postgres restart: "no" pgbouncer: container_name: pgbouncer image: edoburu/pgbouncer:latest ports: - "6432:6432" restart: no networks: - ddon-psql-net volumes: - ./pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini:ro - ./userlist.txt:/etc/pgbouncer/userlist.txt:ro environment: - DB_USER=postgres - DB_PASSWORD=postgres depends_on: - db