diff --git a/docker-compose.yaml b/docker-compose.yaml index e8cb20b..260258e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -115,6 +115,26 @@ services: timeout: 5s retries: 3 + pgadmin: + # Web pgAdmin4, connecting to tracksolid_db through pgbouncer. + # Runbook: 260507_pgbouncer_deployment.md (Phase 2) + # Coolify UI maps a subdomain to this service on internal port 80. + image: dpage/pgadmin4 + restart: always + depends_on: + pgbouncer: + condition: service_healthy + env_file: .env + environment: + - PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL} + - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD} + - PGADMIN_CONFIG_SERVER_MODE=True + - PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False + - PGADMIN_DISABLE_POSTFIX=True + volumes: + - pgadmin-data:/var/lib/pgadmin + - ./pgadmin/servers.json:/pgadmin4/servers.json:ro + db_backup: build: context: ./backup @@ -141,3 +161,5 @@ volumes: name: timescale-data grafana-data: name: grafana-data + pgadmin-data: + name: pgadmin-data diff --git a/pgadmin/servers.json b/pgadmin/servers.json new file mode 100644 index 0000000..3ec4934 --- /dev/null +++ b/pgadmin/servers.json @@ -0,0 +1,17 @@ +{ + "Servers": { + "1": { + "Name": "tracksolid_db (via pgbouncer)", + "Group": "Servers", + "Host": "pgbouncer", + "Port": 6432, + "MaintenanceDB": "tracksolid_db", + "Username": "postgres", + "SSLMode": "disable", + "ConnectionParameters": { + "sslmode": "disable", + "connect_timeout": 10 + } + } + } +}