Cara Menyebarkan PostgreSQL sebagai Wadah Docker

Cara Menyebarkan PostgreSQL sebagai Wadah Docker – PostgreSQL, juga disebut sebagai Postgres, adalah sistem basis data relasional objek terkemuka. Ini populer karena tingkat kepatuhannya yang tinggi terhadap standar SQL dan penyertaan fitur tambahan yang menyederhanakan bekerja dengan kumpulan data kompleks dalam skala besar.

Cara Menyebarkan PostgreSQL sebagai Wadah Docker

pgsql – PostgreSQL menggunakan arsitektur client-server tradisional sehingga Anda perlu menjalankannya secara independen dari kode aplikasi Anda. Dalam panduan ini, Anda akan menerapkan instance server PostgreSQL sebagai container Docker. Ini menghindari penambahan paket ke mesin host Anda dan membantu mengisolasi database Anda dari bagian lain dari tumpukan Anda. Pastikan Anda telah menginstal Docker sebelum melanjutkan.

Baca Juga : PostgreSQL vs. MySQL: 9 kriteria utama untuk mendorong keputusan database Anda

Mulai

PostgreSQL memiliki gambar resmi di Docker Hub yang tersedia dalam beberapa varian berbeda. Tag memungkinkan Anda memilih antara versi PostgreSQL utama dari v9 hingga v14 dan memilih sistem operasi yang digunakan sebagai gambar dasar. Alpine, Debian Stretch, dan Debian Bullseye ditawarkan. Untuk keperluan tutorial ini, kita akan menggunakan postgres:14tag yang menyediakan PostgreSQL 14 di atas Bullseye. Anda bebas memilih versi lain yang sesuai dengan kebutuhan Anda.

Anda harus memberikan nilai untuk POSTGRES_PASSWORDvariabel lingkungan. Ini mendefinisikan kata sandi yang akan diberikan ke akun pengguna super default Postgres. Nama pengguna default postgrestetapi dapat diubah dengan mengatur POSTGRES_USERvariabel lingkungan.

Bendera -vdigunakan untuk memasang volume Docker ke direktori data wadah PostgreSQL. Volume bernama disebut postgresdireferensikan; Docker akan membuatnya atau memasang kembali volume jika sudah ada. Anda harus menggunakan volume untuk menyimpan database Anda di luar wadah. Tanpanya, Anda akan menggunakan data Anda saat penampung berhenti.

PostgreSQL mendengarkan pada port 5432 secara default. Port container terikat ke port 5432 pada host Docker Anda dengan -pflag . Bendera -ddigunakan untuk memulai penampung dalam mode terpisah, secara efektif menjadikannya layanan latar belakang yang terus berjalan hingga dihentikan dengan docker stop.

Menyediakan Kata Sandi sebagai File

Jika Anda tidak nyaman memberikan kata sandi pengguna super Anda sebagai tanda CLI teks biasa, Anda dapat menyuntikkannya sebagai file melalui volume sebagai gantinya. Anda kemudian harus mengatur POSTGRES_PASSWORD_FILEvariabel lingkungan untuk memberikan Postgres jalur ke file itu.

Menghubungkan ke Basis Data Anda

Karena PostgreSQL terikat ke port 5432 di atas, Anda dapat terhubung ke database Anda localhost:5432dari klien mana pun yang kompatibel. Gunakan kredensial yang Anda tetapkan sebagai variabel lingkungan saat memulai penampung. Gambar Docker juga menyertakan psqlbiner yang dapat Anda panggil dengandocker exec . Gunakan ini untuk berinteraksi dengan cepat dengan database Anda dari shell PostgreSQL di dalam wadah.

Menghubungkan Dari Kontainer Docker Lainnya

Membuat jaringan Docker adalah cara yang lebih disukai untuk mengakses PostgreSQL dari wadah lain di host yang sama. Ini menghindari pengikatan port server Postgres dan berpotensi mengekspos layanan ke jaringan host Anda yang lebih luas.

Menyemai Database

Gambar Docker mendukung file benih yang ditempatkan ke dalam /docker-entrypoint-initdb.ddirektori. Setiap .sqlatau .sql.gzfile akan dieksekusi untuk menginisialisasi database. Ini terjadi setelah akun pengguna dan postgresdatabase default dibuat. Anda juga dapat menambahkan .shfile untuk menjalankan skrip shell arbitrer. Semua skrip dieksekusi dalam urutan abjad. Mekanisme ini berarti semua yang Anda butuhkan untuk seed database Anda adalah satu set SQL atau skrip shell yang dinamai dalam urutan yang benar. Pasang ini ke wadah baru Anda menggunakan -vbendera dengan docker run.

Membuat Gambar Database Kustom

Anda dapat memilih untuk mengenkapsulasi file konfigurasi dan skrip inisialisasi dalam gambar Docker Anda sendiri. Ini akan memungkinkan siapa pun yang memiliki akses ke gambar untuk membuat instance PostgreSQL baru yang telah dikonfigurasikan sebelumnya untuk aplikasi Anda. Inilah Dockerfile sederhana yang dapat Anda gunakan.

Haruskah Anda Menampung Basis Data Produksi Anda?

Mungkin sulit untuk memutuskan apakah akan menjalankan database di Docker . Containerizing PostgreSQL membuat pengalaman penyiapan lebih mudah tetapi terkadang lebih menantang untuk dipelihara. Anda perlu berhati-hati saat mengelola wadah Anda untuk menghindari kehilangan data di masa mendatang. Docker juga menambahkan overhead kinerja sederhana yang layak dipertimbangkan ketika Anda mengantisipasi database tur akan bekerja dengan volume data yang sangat besar. Manfaat Docker adalah peningkatan portabilitas, kemudahan penskalaan, dan efisiensi pengembang. Menampung database Anda memungkinkan siapa pun menjalankan instance baru menggunakan Docker, tanpa menginstal dan mengonfigurasi PostgreSQL secara manual terlebih dahulu. Oleh karena itu, menulis Dockerfile untuk database PostgreSQL Anda yang menambahkan file konfigurasi dan skrip seed SQL adalah cara yang baik untuk membantu pengembang memulai lingkungan baru dengan cepat.

Ringkasan

PostgreSQL adalah mesin database berbasis SQL canggih yang menambahkan kemampuan relasional objek. Meskipun Anda dapat memilih untuk menjalankan penerapan tradisional dalam produksi, menggunakan instans dalam container menyederhanakan penyiapan dan membantu pengembang dengan cepat menjalankan infrastruktur mereka sendiri. Aspek terpenting dari penerapan Dockerized adalah memastikan Anda menggunakan volume untuk menyimpan data Anda. Ini akan memungkinkan Anda untuk menghentikan, mengganti, dan memperbarui penampung Anda ke versi gambar yang lebih baru tanpa kehilangan database Anda. Di luar penyimpanan, Anda harus menilai bagaimana Anda akan terhubung ke Postgres dan menghindari mengikat port ke host Anda kecuali diperlukan. Saat menghubungkan dari wadah lain, yang terbaik adalah menggunakan jaringan Docker bersama untuk memfasilitasi akses.