Cara Menjalankan PostgreSQL dan pgAdmin 4 Menggunakan Docker Compose

Cara Menjalankan PostgreSQL dan pgAdmin 4 Menggunakan Docker Compose

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:

  1. Buka peramban web dan akses http://localhost:5050.
  2. Login menggunakan kredensial PGADMIN_EMAIL dan PGADMIN_PASSWORD.
  3. Klik tombol Add New Server.
  4. Pada tab General, isi kolom Name (contoh: Local Postgres).
  5. 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)
  1. 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.

Related Posts

Comments (0)

Please login to post a comment

No comments yet. Be the first to share your thoughts!

Ilham Shofa

creativity is just connecting things. - Steve Jobs

ilhameid.© 2026