Pengantar
Docker memungkinkan containerisasi aplikasi dengan mudah, dan dengan Dockerfile, Anda dapat menentukan langkah-langkah untuk membangun sebuah gambar. Artikel ini akan memandu Anda dalam membangun gambar Docker PostgreSQL dengan data persisten menggunakan Dockerfile. Kami akan membahas struktur file, instruksi setup, dan eksekusi skrip inisialisasi selama pembuatan kontainer.
Struktur File
Sebelum kita mulai, mari atur struktur file yang diperlukan untuk membangun gambar Docker PostgreSQL:
- Dockerfile: Dockerfile berisi instruksi untuk membangun gambar Docker. Ini menentukan gambar dasar, mengatur variabel lingkungan, mengekspos port, menyalin file, dan menjalankan perintah. Berikut adalah contohnya:
- init.sql: File
init.sql
berisi pernyataan SQL apa pun yang ingin Anda jalankan selama inisialisasi kontainer. Sesuaikan file ini sesuai kebutuhan.
# Gunakan gambar dasar PostgreSQL resmi
FROM postgres:latest
# Atur variabel lingkungan
ENV POSTGRES_USER=myuser
ENV POSTGRES_PASSWORD=mypassword
ENV POSTGRES_DB=mydatabase
# Mengekspos port PostgreSQL
EXPOSE 5432
# Salin skrip inisialisasi
COPY init.sql /docker-entrypoint-initdb.d/
# Atur volume untuk data persisten
VOLUME /var/lib/postgresql/data
-- Contoh: Buat tabel contoh
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
Instruksi Setup
Untuk memulai, ikuti langkah-langkah berikut:
- Buat direktori baru untuk proyek Anda dan navigasikan ke direktori tersebut di terminal Anda.
- Buat file
Dockerfile
daninit.sql
dengan konten yang dijelaskan di atas. - Simpan file-file tersebut di direktori yang sama.
Membangun Gambar Docker dan Memulai Kontainer
Dengan struktur file dan setup selesai, Anda dapat membangun gambar Docker dan memulai kontainer PostgreSQL menggunakan Dockerfile.
- Buka terminal Anda dan navigasikan ke direktori di mana
Dockerfile
berada. - Bangun gambar Docker dengan menjalankan perintah berikut:
- Mulai kontainer PostgreSQL dengan perintah berikut:
- Pastikan kontainer berjalan dengan mengeksekusi perintah berikut:
docker build -t my-postgres-image .
Perintah ini membangun gambar Docker menggunakan instruksi di Dockerfile
. Flag -t
menandai gambar dengan nama (misalnya, my-postgres-image
).
docker run -d -p 5432:5432 --name my-postgres-container my-postgres-image
Perintah ini menjalankan gambar Docker sebagai kontainer. Flag -p
memetakan port 5432 kontainer ke port 5432 host, memungkinkan akses ke layanan PostgreSQL. Flag --name
menetapkan nama pada kontainer.
Skrip inisialisasi di file init.sql
akan dijalankan selama inisialisasi kontainer, menyiapkan skema database yang ditentukan atau melakukan tugas-tugas setup yang diperlukan.
docker ps
Anda harus melihat my-postgres-container
terdaftar dengan ID kontainer yang sesuai, status, dan detail lainnya.
Menghubungkan ke Kontainer PostgreSQL
Untuk terhubung ke kontainer PostgreSQL yang berjalan dan berinteraksi dengan database, Anda dapat menggunakan alat klien PostgreSQL seperti psql
. Ikuti langkah-langkah berikut:
- Pasang
psql
di mesin lokal Anda jika belum dipasang. Anda dapat memasangnya menggunakan manajer paket Anda atau mengunduhnya dari situs web resmi PostgreSQL. - Gunakan perintah berikut untuk terhubung ke kontainer yang berjalan:
psql -h localhost -p 5432 -U myuser -d mydatabase
Ganti myuser
dengan nama pengguna PostgreSQL yang sesuai dan mydatabase
dengan nama database yang diinginkan. Anda akan diminta memasukkan kata sandi untuk pengguna.
Setelah terhubung, Anda dapat mengeksekusi kueri SQL, membuat tabel, memasukkan data, dan melakukan operasi lainnya.
Menghentikan dan Menghapus Kontainer
Untuk menghentikan dan menghapus kontainer PostgreSQL, gunakan perintah berikut:
docker stop my-postgres-container && docker rm my-postgres-container
Perintah ini menghentikan dan menghapus kontainer.
Kesimpulan
Menggunakan Dockerfile menyederhanakan proses membangun dan mengelola gambar Docker. Dengan mengikuti langkah-langkah yang diuraikan dalam artikel ini, Anda dapat dengan cepat membangun gambar Docker PostgreSQL dengan data persisten. Skrip inisialisasi yang dijalankan selama inisialisasi kontainer memungkinkan Anda untuk menyiapkan database dengan skema atau tugas setup yang diinginkan. Pendekatan ini menyediakan cara yang fleksibel dan efisien untuk bekerja dengan PostgreSQL dalam lingkungan terkontainerisasi.