Lewati ke konten utama

Docker pgAdmin: Cara Menyiapkan GUI PostgreSQL dengan Docker Compose

Panduan langkah demi langkah untuk menyiapkan pgAdmin 4 dan PostgreSQL dengan Docker Compose, mencakup konfigurasi container, pendaftaran server, dan fitur inti pgAdmin termasuk Query Tool, penjelajah skema, serta backup/restore.
Diperbarui 4 Mei 2026  · 10 mnt baca

Berganti-ganti sesi, menghafal sintaks, dan berharap Anda tidak salah ketik kueri destruktif lama-kelamaan melelahkan. Tidak ada rencana kueri visual, tidak ada penjelajah skema, dan tidak ada cara mudah untuk mencadangkan basis data. Berfungsi, tetapi jauh dari ideal.

pgAdmin 4 mengatasi hal ini dengan GUI berbasis peramban yang dibuat khusus untuk PostgreSQL. Menjalankannya di Docker berarti tanpa instalasi lokal. Anda hanya perlu memulai containernya.

Dalam artikel ini, saya akan menunjukkan cara menyiapkan PostgreSQL dan pgAdmin 4 dengan Docker Compose, menghubungkan kedua container, serta menggunakan Query Tool, penjelajah skema, dan fitur pencadangan di pgAdmin.

Untuk mengikuti panduan ini, Anda perlu Docker terpasang dan berjalan di mesin Anda. Jika Anda baru dengan Docker Compose, baca panduan kami untuk melihat bagaimana alat ini menyederhanakan pengembangan multi-container.

Apa itu pgAdmin 4?

pgAdmin 4 adalah platform administrasi dan pengembangan PostgreSQL yang bersifat open-source dan berbasis peramban. Anda mengaksesnya melalui peramban web, jadi tidak ada aplikasi desktop yang perlu diinstal. Alat ini memberi Anda GUI untuk mengelola basis data, menjalankan kueri, meninjau skema, dan menangani pencadangan—semuanya tanpa menyentuh command line.

Citra Docker resmi adalah dpage/pgadmin4, dipelihara oleh tim pengembang pgAdmin.

Menjalankan pgAdmin 4 di Docker memiliki beberapa keunggulan nyata dibandingkan instalasi lokal. Pertama adalah portabilitas—seluruh lingkungan basis data Anda ada dalam sebuah berkas docker-compose.yml yang bisa Anda bagikan dengan rekan tim. Kedua, tidak ada konflik versi—pgAdmin berjalan di containernya sendiri, sepenuhnya terisolasi dari apa pun di mesin Anda. Dan saat selesai, docker compose down membersihkannya.

pgAdmin 4 vs. GUI PostgreSQL lainnya

Ada banyak alat GUI manajemen basis data. Berikut perbandingan pgAdmin 4 dengan dua alternatif populer.

pgAdmin 4 versus alternatif populer

pgAdmin 4 versus alternatif populer

DBeaver dan TablePlus adalah alat yang bagus, tetapi tidak ada yang memiliki citra Docker resmi. Jika instance PostgreSQL Anda sudah berjalan di Docker, pgAdmin 4 sangat cocok—Anda hanya perlu menambahkan satu service ke docker-compose.yml dan semuanya berjalan bersama dalam jaringan yang sama.

Menyiapkan Lingkungan dengan Docker Compose

Cara tercepat untuk menjalankan PostgreSQL dan pgAdmin 4 bersama adalah satu berkas docker-compose.yml. Jika Anda baru dengan topik ini, Panduan Docker Compose kami membahas dasarnya. Di sini, saya akan fokus pada konfigurasi spesifik pgAdmin.

Berikut berkas lengkap yang bisa Anda salin-tempel:

services:
  postgres:
    image: postgres:18
    container_name: postgres
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql
    networks:
      - pgnetwork

  pgadmin:
    image: dpage/pgadmin4:9.13
    container_name: pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: you@yourdomain.com
      PGADMIN_DEFAULT_PASSWORD: password
      PGADMIN_LISTEN_PORT: 5050 
    ports:
      - "5050:5050"                
    volumes:
      - pgadmin_data:/var/lib/pgadmin
    depends_on:
      - postgres
    networks:
      - pgnetwork

volumes:
  postgres_data:
  pgadmin_data:

networks:
  pgnetwork:

Field depends_on memberi tahu Docker Compose untuk memulai container postgres sebelum pgadmin. Tanpanya, pgAdmin bisa saja mulai sebelum PostgreSQL siap dan gagal terhubung. Ini tidak menunggu PostgreSQL benar-benar sehat—hanya menunggu container mulai. Itu sudah cukup untuk menghindari sebagian besar kondisi balapan.

Variabel lingkungan pgAdmin 4

Dua variabel lingkungan wajib diisi:

  • PGADMIN_DEFAULT_EMAIL - alamat email yang akan Anda gunakan untuk masuk ke antarmuka web pgAdmin
  • PGADMIN_DEFAULT_PASSWORD - kata sandi untuk akun tersebut

Yang ketiga opsional tetapi sebaiknya Anda tentukan:

  • PGADMIN_LISTEN_PORT - port yang didengarkan pgAdmin di dalam container. Nilai defaultnya 80, tetapi menyetelnya ke 5050 membuat pemetaan port lebih rapi.

Meski begitu, menulis kredensial langsung di berkas Compose adalah ide buruk, terutama jika berkas tersebut masuk ke version control. Pindahkan ke berkas .env sebagai gantinya.

Buat berkas .env di direktori yang sama dengan docker-compose.yml:

POSTGRES_USER=admin
POSTGRES_PASSWORD=secret
POSTGRES_DB=mydb
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=secret

Lalu referensikan variabelnya di berkas Compose Anda:

# postgres
environment:
  POSTGRES_USER: ${POSTGRES_USER}
  POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
  POSTGRES_DB: ${POSTGRES_DB}
  
# pgadmin
environment:
  PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
  PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}

Docker Compose akan memuat berkas .env saat Anda menjalankan perintah, jadi tidak diperlukan konfigurasi tambahan. Ingat untuk menambahkan .env ke .gitignore agar kredensial Anda tidak masuk ke repo.

Volume dan persistensi data

Volume yang dipetakan ke /var/lib/pgadmin adalah tempat pgAdmin menyimpan data, seperti data sesi, koneksi server yang disimpan, dan konfigurasi. Menghapus ini dari berkas compose berarti Anda akan kehilangan semuanya setiap kali container dimulai ulang.

Dalam berkas compose saat ini, Anda memiliki named volume yang dikelola Docker di mesin host Anda. Data akan bertahan melewati restart container, pembuatan ulang, dan pembaruan citra—selama Anda tidak secara eksplisit menghapus volumenya dengan docker volume rm.

Menjalankan Stack dan Mengakses pgAdmin 4

Dengan docker-compose.yml siap, menjalankan stack cukup dengan satu perintah:

docker compose up -d

Flag -d menjalankan kedua container dalam mode detached—mereka berjalan di latar belakang dan terminal Anda tetap bebas. Untuk memastikan keduanya berjalan:

docker ps

Anda akan melihat postgres dan pgadmin tercantum dengan status Up.

Status container

Status container

Jika ada yang tampak tidak beres, periksa log pgAdmin:

docker logs pgadmin

Proses awal yang sehat terlihat seperti ini:

Log startup pgAdmin

Log startup pgAdmin

Jika Anda melihat galat, kemungkinan besar salah satu dari tiga ini:

  • Otentikasi kata sandi gagal: PGADMIN_DEFAULT_PASSWORD Anda hilang atau salah format di berkas .env

  • Port sudah dialokasikan: ada proses lain yang berjalan di port 5050; ubah port host di berkas Compose Anda

  • Tidak ada berkas atau direktori: path volume salah atau container tidak memiliki izin untuk menulis ke sana

Setelah kedua container aktif dan log bersih, buka peramban Anda dan menuju ke http://localhost:5050:

Halaman masuk pgAdmin

Halaman masuk pgAdmin

Masuk dengan email dan kata sandi yang Anda tetapkan di PGADMIN_DEFAULT_EMAIL dan PGADMIN_DEFAULT_PASSWORD. Anda akan masuk ke dasbor pgAdmin, siap untuk mendaftarkan server PostgreSQL Anda:

Halaman beranda pgAdmin

Halaman beranda pgAdmin

Menghubungkan pgAdmin 4 ke Container PostgreSQL Anda

Di sidebar pgAdmin, klik kanan Servers - Register - Server. Sebuah dialog akan terbuka dengan dua tab yang perlu Anda isi: General dan Connection.

Tab General

Beri nama server yang bermakna—misalnya local-dev-postgres. Ini hanya label di dalam pgAdmin, jadi pilih apa pun yang masuk akal untuk setup Anda.

Pendaftaran server - Tab General

Pendaftaran server - Tab General

Tab Connection

Jangan gunakan localhost di sini. 

Di dalam jaringan Docker, localhost merujuk ke container itu sendiri—bukan mesin host Anda, dan bukan container PostgreSQL. Docker memiliki DNS internal, dan ia menyelesaikan nama container menggunakan nama service yang didefinisikan di docker-compose.yml Anda. Jadi jika service PostgreSQL Anda bernama postgres, itulah hostname yang Anda gunakan.

Isi field sebagai berikut:

  • Host name/address: postgres (nama service dari docker-compose.yml)

  • Port: 5432

  • Maintenance database: nilai POSTGRES_DB dari berkas Compose Anda (mis., mydb)

  • Username: nilai POSTGRES_USER (mis., admin)

  • Password: nilai POSTGRES_PASSWORD

Klik Save

Pendaftaran server - Tab Connection

Pendaftaran server - Tab Connection

Jika semuanya benar, server akan muncul di sidebar dan Anda dapat membukanya untuk melihat basis data Anda:

Pendaftaran server berhasil

Pendaftaran server berhasil

Ini berarti Anda sudah terhubung.

Menggunakan Query Tool

Karena Anda sudah terhubung, saya akan menunjukkan dasar-dasar pgAdmin 4 dan Postgres secara umum.

Buka Query Tool dengan mengeklik Tools - Query Tool dari menu atas. Antarmukanya memiliki tiga panel:

  • Editor: tempat Anda menulis SQL
  • Data Output: tempat hasil muncul setelah Anda menjalankan kueri
  • Messages: tempat PostgreSQL mengirim pesan status, galat, dan info eksekusi

Query tool

Query tool

Mari buat tabel orders sederhana dan tambahkan beberapa data. Anda dapat menjalankan setiap blok dengan menekan tombol Play atau menekan F5 sebagai pintasan.

Jalankan ini untuk membuat tabel:

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    customer_name VARCHAR(100) NOT NULL,
    product VARCHAR(100) NOT NULL,
    quantity INT NOT NULL,
    order_date DATE DEFAULT CURRENT_DATE
);

Sisipkan beberapa baris:

INSERT INTO orders (customer_name, product, quantity)
VALUES
    ('Alice Johnson', 'Wireless Keyboard', 2),
    ('Bob Smith', 'USB-C Hub', 1),
    ('Carol White', 'Mechanical Keyboard', 3);

Dan sekarang kueri datanya:

SELECT * FROM orders;

Melakukan kueri data

Melakukan kueri data

Hasil ditampilkan di panel Data Output sebagai tabel. Anda dapat mengurutkan kolom, mengubah ukurannya, dan menyalin baris langsung dari grid.

Membaca rencana kueri visual

Untuk melihat apa yang terjadi di balik layar saat Anda menjalankan kueri, jalankan EXPLAIN ANALYZE pada pernyataan SELECT Anda:

EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_name = 'Alice Johnson';

Hasil Explain Analyze

Hasil Explain Analyze

Panel Data Output menampilkan keluaran mentah. Namun pgAdmin punya opsi yang lebih baik. Klik tombol Explain di toolbar—dan pgAdmin akan merender rencana kueri sebagai grafik interaktif.

Rencana kueri sebagai grafik

Rencana kueri sebagai grafik

Sekarang, ini sederhana untuk kueri ini, tetapi Anda akan mendapatkan banyak wawasan saat melakukan join tabel atau agregasi data yang lebih kompleks.

Ini penting karena membaca keluaran mentah EXPLAIN itu lambat dan rawan kesalahan. Rencana visual memudahkan melihat saat PostgreSQL melakukan pemindaian tabel penuh pada tabel besar, atau saat sebuah indeks ada tetapi tidak digunakan.

Mengelola Skema Basis Data Anda

Sidebar pgAdmin memberi Anda tampilan lengkap struktur basis data—dan memungkinkan Anda memodifikasinya melalui GUI.

Pohon di sidebar berurutan: Servers - nama server Anda - Databases - basis data Anda - Schemas - public - Tables. Buka salah satu tabel dan Anda akan melihat Columns, Indexes, dan Constraints tercantum sebagai node turunan. Klik salah satunya untuk meninjau detail di panel kanan.

Membuat dan memodifikasi tabel

Untuk membuat tabel baru, klik kanan pada Tables di bawah skema Anda dan pilih Create - Table. Sebuah dialog akan terbuka dengan beberapa tab.

Membuat tabel

Membuat tabel

Tab General adalah tempat Anda menetapkan nama tabel. Beralih ke tab Columns untuk menambahkan kolom—setiap baris memungkinkan Anda menetapkan nama kolom, tipe data, panjang, dan apakah bisa bernilai null. Tab Constraints menangani primary key, foreign key, dan unique constraint.

Untuk menambahkan indeks ke tabel yang sudah ada, bentangkan tabel di sidebar, klik kanan Indexes, dan pilih Create - Index. Pilih kolom yang akan diindeks dan tipe indeks—btree adalah default dan cocok untuk sebagian besar kasus.

Membuat indeks

Membuat indeks

Pencadangan dan pemulihan

Untuk mencadangkan basis data, buka Tools - Backup. Anda perlu memilih format:

  • Custom: format biner terkompresi; opsi yang paling fleksibel dan pilihan terbaik untuk sebagian besar kasus karena Anda dapat memulihkan tabel tertentu darinya
  • Plain: skrip SQL biasa yang dapat Anda buka dan baca di editor teks apa pun
  • Tar: arsip tidak terkompresi; lebih jarang digunakan tetapi bermanfaat untuk beberapa alur kerja pemulihan

Setelah Anda memilih format dan path tujuan, pgAdmin menjalankan pg_dump di latar belakang dan menyimpan berkas ke mesin lokal Anda.

Membuat cadangan

Membuat cadangan

Untuk memulihkan, buka Tools - Restore, pilih berkas cadangan Anda, dan arahkan ke basis data target.

Memulihkan dari cadangan

Memulihkan dari cadangan

Jika Anda bertanya-tanya mengapa ini berguna, bayangkan Anda sedang menguji migrasi destruktif pada basis data pengembangan. Ambil cadangan terlebih dahulu, jalankan migrasi, dan jika ada yang rusak, pulihkan cadangan untuk kembali ke kondisi yang diketahui.

Praktik Terbaik Menjalankan pgAdmin 4 di Docker

Menjalankan pgAdmin 4 adalah satu hal. Namun menjaganya tetap berjalan mulus mengharuskan Anda mengetahui beberapa hal ekstra. Berikut beberapa kiat praktis.

Jauhkan kredensial dari berkas Compose Anda

Jika docker-compose.yml Anda masuk ke version control—dan biasanya memang begitu—kata sandi yang ditulis langsung akan ikut terbawa. Gunakan berkas .env untuk kredensial dan tambahkan ke .gitignore. Untuk lingkungan produksi, melangkahlah lebih jauh dan gunakan Docker secrets, yang memasang nilai sensitif sebagai berkas, bukan variabel lingkungan.

Jangan pernah mengekspos port pgAdmin secara publik

Secara default, Docker mengikat port ke 0.0.0.0, yang berarti semua antarmuka jaringan—termasuk yang publik. Di server jarak jauh, itu membuat instance pgAdmin Anda dapat diakses dari internet. Ikat secara eksplisit ke 127.0.0.1 sebagai gantinya:

ports:
  - "127.0.0.1:5050:5050"

Ini membuat pgAdmin hanya dapat diakses dari server itu sendiri. Gunakan tunnel SSH atau reverse proxy jika Anda memerlukan akses jarak jauh.

Kunci tag citra Anda

Menggunakan dpage/pgadmin4:latest akan menarik versi baru saat seseorang menjalankan docker compose pull berikutnya. Versi baru itu bisa berperilaku berbeda, merusak konfigurasi Anda, atau memperkenalkan perubahan tak terduga. Gunakan tag spesifik seperti dpage/pgadmin4:9.13 agar setiap rekan tim menjalankan versi yang persis sama.

Muat awal koneksi server dengan servers.json

Jika seluruh tim Anda berbagi setup Compose yang sama, jangan membuat semua orang mendaftarkan server PostgreSQL setelah menyalakan stack. pgAdmin mendukung berkas servers.json yang mengisi koneksi saat startup. Mount berkas itu ke container seperti ini:

volumes:
  - ./servers.json:/pgadmin4/servers.json

Berikut tampilan servers.json minimal:

{
  "Servers": {
    "1": {
      "Name": "local-dev-postgres",
      "Group": "Servers",
      "Host": "postgres",
      "Port": 5432,
      "MaintenanceDB": "mydb",
      "Username": "admin",
      "SSLMode": "prefer"
    }
  }
}

Server akan muncul saat pgAdmin mulai—tanpa setup manual.

Kesimpulan

Dalam artikel ini, saya memandu Anda menyiapkan pgAdmin 4 di Docker dari nol. Anda menulis berkas Docker Compose yang menyalakan PostgreSQL dan pgAdmin 4 bersama, menghubungkan kedua container menggunakan DNS internal Docker, serta menggunakan fitur inti pgAdmin—Query Tool, penjelajah skema, dan alur kerja backup/restore.

Prinsip intinya adalah reprodusibilitas. 

Sebuah berkas docker-compose.yml, servers.json, dan .env sudah cukup untuk memberikan rekan tim lingkungan basis data yang sepenuhnya terkonfigurasi. Ini akan memastikan masalah “berjalan di mesin saya” tidak terjadi lagi.

Untuk mendalami Docker dan kontainerisasi, lihat kursus Intermediate Docker kami. Penuh dengan kiat berguna tentang multi-stage builds, jaringan, dan ulasan mendalam tentang Compose.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

Docker pgAdmin FAQs

Can I run pgAdmin 4 in Docker on Windows and macOS?

Ya. Citra dpage/pgadmin4 berjalan di sistem operasi apa pun yang mendukung Docker, termasuk Windows dan macOS. Proses penyiapan dan berkas docker-compose.yml identik di semua platform.

Do I need to reinstall pgAdmin 4 every time I update the Docker image?

Tidak. Menarik versi citra baru tidak memengaruhi data tersimpan Anda selama Anda memetakan /var/lib/pgadmin ke named volume. Koneksi server, data sesi, dan konfigurasi Anda tetap ada melewati pembaruan citra dan restart container.

Is it safe to use pgAdmin 4 in Docker for production databases?

pgAdmin 4 di Docker baik untuk pengembangan dan alat internal, tetapi Anda perlu mengamankannya sebelum mengarahkannya ke basis data produksi. Jangan pernah mengekspos port pgAdmin secara publik, selalu gunakan berkas .env atau Docker secrets untuk kredensial, dan pertimbangkan menempatkan pgAdmin di belakang reverse proxy dengan autentikasi jika Anda memerlukan akses jarak jauh.

Why can't I use `localhost` as the hostname when connecting pgAdmin to PostgreSQL?

Di dalam jaringan Docker, localhost mengarah ke container itu sendiri—bukan mesin host Anda atau container lain. Docker memiliki DNS internal yang menyelesaikan nama container menggunakan nama service yang didefinisikan di docker-compose.yml Anda. Gunakan nama service PostgreSQL—biasanya postgres—sebagai hostname.

What's the difference between the Custom, Plain, and Tar backup formats in pgAdmin?

Custom adalah format biner terkompresi yang memberi fleksibilitas paling besar—Anda dapat memulihkan tabel tertentu darinya alih-alih seluruh basis data. Plain menghasilkan skrip SQL yang dapat dibaca dan dibuka di editor teks apa pun, berguna untuk meninjau atau mengedit sebelum pemulihan. Tar adalah arsip tidak terkompresi yang lebih jarang digunakan tetapi didukung oleh pg_restore untuk pemulihan selektif.

Topik

Pelajari Docker bersama DataCamp

Kursus

Pengantar Docker

4 Hr
46.6K
Dapatkan pengenalan tentang Docker dan temukan pentingnya dalam kotak alat profesional data. Pelajari tentang kontainer Docker, gambar, dan lainnya.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

12 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat Lebih BanyakLihat Lebih Banyak