PostgreSQL + pgAdmin
A PostgreSQL 16 database stack paired with pgAdmin 4 for visual database administration, query execution, and monitoring. PostgreSQL is tuned with sensible defaults for shared buffers, work memory, and connection limits, and all data is persisted in a named volume. pgAdmin 4 provides a full-featured web UI on port 5050 for managing databases, running SQL queries, viewing table structures, and monitoring server activity. A pre-configured server entry can be automatically loaded via the servers.json mount, so pgAdmin connects to PostgreSQL without manual setup. Both services include health checks and resource limits, with network separation ensuring PostgreSQL is not directly exposed to external traffic.
Enthaltene Services
postgres
postgres:16-alpine
Umgebungsvariablen:
pgadmin
dpage/pgadmin4:8.14
Umgebungsvariablen:
Generiertes YAML
# Generated by ComposeHub (composehub.dev)
name: postgres-pgadmin
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
command:
- postgres
- "-c"
- shared_buffers=256MB
- "-c"
- effective_cache_size=768MB
- "-c"
- work_mem=16MB
- "-c"
- maintenance_work_mem=128MB
- "-c"
- max_connections=100
- "-c"
- checkpoint_completion_target=0.9
- "-c"
- wal_buffers=16MB
- "-c"
- log_min_duration_statement=1000
ports:
- 5432:5432
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: ${POSTGRES_DB:-appdb}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
networks:
- backend
healthcheck:
test:
- CMD-SHELL
- pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-appdb}
interval: 15s
timeout: 5s
retries: 5
start_period: 30s
deploy:
resources:
limits:
cpus: "2.00"
memory: 1024M
reservations:
cpus: "0.50"
memory: 256M
labels:
com.composeforge.description: PostgreSQL 16 database server
pgadmin:
image: dpage/pgadmin4:8.14
restart: unless-stopped
ports:
- 5050:80
volumes:
- pgadmin_data:/var/lib/pgadmin
- pgadmin_config:/pgadmin4/servers.json
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-changeme}
PGADMIN_CONFIG_SERVER_MODE: ${PGADMIN_SERVER_MODE:-True}
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: ${PGADMIN_MASTER_PASSWORD_REQUIRED:-False}
PGADMIN_LISTEN_PORT: "80"
networks:
- frontend
- backend
depends_on:
postgres:
condition: service_healthy
healthcheck:
test:
- CMD-SHELL
- wget --no-verbose --tries=1 --spider http://localhost:80/misc/ping || exit 1
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
deploy:
resources:
limits:
cpus: "1.00"
memory: 512M
reservations:
cpus: "0.25"
memory: 128M
labels:
com.composeforge.description: pgAdmin 4 web-based PostgreSQL administration
networks:
frontend:
driver: bridge
backend:
driver: bridge
volumes:
postgres_data:
driver: local
pgadmin_data:
driver: local
pgadmin_config:
driver: local
Kurzinfo
- Services
- 2
- Netzwerke
- 2
- Volumes
- 3
Wann verwenden
Dieses Template ist ideal für die Einrichtung einer postgresql + pgadmin Umgebung. Alle Services sind mit Healthchecks, Ressourcenlimits und sinnvollen Standardwerten vorkonfiguriert. Passen Sie die Umgebungsvariablen an, bevor Sie in Produktion gehen.
Tipps
- Ändern Sie alle Standardpasswörter vor dem Deployment
- Überprüfen Sie die Ressourcenlimits für Ihre Hardware
- Fügen Sie einen Reverse Proxy für HTTPS in Produktion hinzu
- Konfigurieren Sie Backup-Strategien für Daten-Volumes