Panduan Setup Database dan GUI Management
Menjalankan PostgreSQL bersama GUI pgAdmin 4 menggunakan Docker Compose merupakan standar praktik terbaik untuk lingkungan pengembangan lokal maupun server staging. Pendekatan ini memastikan isolasi layanan, kemudahan migrasi data melalui persistent volume, serta manajemen konfigurasi yang terpusat.
Prasyarat
- Docker Engine dan Docker Compose telah terpasang.
- Akses terminal atau command line interface.
- Asumsi versi software: PostgreSQL 16 dan pgAdmin 4 (dpage/pgadmin4:latest).
1. Amankan Credential Menggunakan File .env
Langkah utama sebelum membuat stack container adalah mengamankan data sensitif seperti nama pengguna dan kata sandi di luar file deklarasi container.
Buat file bernama .env di direktori proyek:
POSTGRES_USER=myuser POSTGRES_PASSWORD=mysupersecretpassword POSTGRES_DB=app_db PGADMIN_EMAIL=admin@example.com PGADMIN_PASSWORD=adminpassword
Peringatan Keamanan: Jangan pernah mengunggah file .env ke repository publik. Tambahkan file .env ke dalam file .gitignore Anda. Untuk lingkungan produksi, gunakan kata sandi yang kompleks.
2. Buat Konfigurasi docker-compose.yml
Buat file docker-compose.yml pada direktori yang sama dengan file .env. Konfigurasi ini mendefinisikan jaringan privat (bridge network) dan dua persistent volume agar data database dan pengaturan GUI tidak hilang saat container dihentikan.
version: '3.8'
services:
db:
image: postgres:16-alpine
container_name: postgres_db
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- pg_network
pgadmin:
image: dpage/pgadmin4:latest
container_name: pgadmin_gui
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
ports:
- "5050:80"
volumes:
- pgadmin_data:/var/lib/pgadmin
networks:
- pg_network
volumes:
postgres_data:
pgadmin_data:
networks:
pg_network:
driver: bridge
3. Menjalankan Stack Container
Jalankan perintah berikut untuk mengunduh image dan menjalankan service secara background (detached mode):
docker compose up -d
Verifikasi bahwa kedua container berjalan dengan baik:
docker ps
4. Menghubungkan pgAdmin 4 ke PostgreSQL
Setelah kedua container aktif, lakukan konfigurasi awal koneksi database pada GUI pgAdmin:
- Buka peramban web dan akses http://localhost:5050.
- Login menggunakan kredensial PGADMIN_EMAIL dan PGADMIN_PASSWORD.
- Klik tombol Add New Server.
- Pada tab General, isi kolom Name (contoh: Local Postgres).
- Pada tab Connection, isi detail berikut:
- Host name/address: db (gunakan nama service container PostgreSQL, bukan localhost).
- Port: 5432
- Maintenance database: app_db (sesuai POSTGRES_DB)
- Username: myuser (sesuai POSTGRES_USER)
- Password: mysupersecretpassword (sesuai POSTGRES_PASSWORD)
- Klik Save.
Checklist Rangkuman
- Credential tersimpan terpisah di file .env.
- PostgreSQL dan pgAdmin terhubung melalui Docker bridge network bernama pg_network.
- Persistent Volume postgres_data dan pgadmin_data aktif mencegah kehilangan data saat restart.
- Host jaringan internal pgAdmin mengacu pada nama service container db.
