PostgreSQL dikenal sebagai salah satu Relational Database Management System (RDBMS) open-source yang paling andal, canggih, dan berskala luas. Sementara itu, pgAdmin merupakan alat administrasi yang populer untuk mengelola PostgreSQL melalui web UI yang intuitif.
Berikut adalah langkah-langkah setup PostgreSQL dan pgAdmin menggunakan Docker.
Menyusun docker-compose.yml
#
Berikut adalah contoh file docker-compose.yml yang direkomendasikan:
x-db-env: &db-env
POSTGRES_USER: ${POSTGRES_USER:-admin}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-securepass}
POSTGRES_DB: ${POSTGRES_DB:-databaseku}
x-pgadmin-env: &pgadmin-env
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-rahasia123}
services:
db:
image: postgres:15-alpine
command: postgres -c 'max_connections=1000'
deploy:
replicas: 1
restart_policy:
condition: any
resources:
limits:
cpus: '2.50'
memory: 1024M
environment:
<<: *db-env
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
est: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER}"]
interval: 60s
timeout: 30s
retries: 3
start_period: 10s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
labels: "service,environment"
pgadmin:
image: dpage/pgadmin4
deploy:
replicas: 1
restart_policy:
condition: any
resources:
limits:
cpus: '2.50'
memory: 1024M
ports:
- "8080:80"
environment:
<<: *pgadmin-env
volumes:
- pgadmin-data:/var/lib/pgadmin
depends_on:
- db
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
labels: "service,environment"
volumes:
pgdata:
pgadmin-data:
Menjalankan Service #
Setelah file docker-compose.yml selesai dibuat, jalankan perintah berikut untuk memulai seluruh service:
docker compose up -d
Untuk memantau log container secara real-time, gunakan perintah:
docker compose logs -f
Akses PostgreSQL dan pgAdmin #
pgAdmin dapat diakses melalui browser pada alamat:
http://localhost:8080
Masukkan email dan password sesuai dengan nilai yang didefinisikan pada environment PGADMIN_DEFAULT_EMAIL dan PGADMIN_DEFAULT_PASSWORD.