Dockerkan REST API Node.js Anda menggunakan teknologi containerisasi Docker, yang menyederhanakan proses penerapan dan pengelolaan.
Proses penggelaran dan menjalankan aplikasi di lingkungan yang berbeda dapat merepotkan karena ada beberapa faktor yang perlu dipertimbangkan seperti menyiapkan variabel lingkungan untuk mengonfigurasi dependensi yang diperlukan dan versi spesifik dari paket perangkat lunak yang berbeda.
Namun, dengan memanfaatkan teknologi containerisasi Docker, Anda dapat menerapkan aplikasi di lingkungan yang berbeda dengan upaya minimal dengan semua ketergantungan yang diperlukan dalam citra buruh pelabuhan. Artinya, Anda tidak perlu khawatir membuat konfigurasi apa pun. Hal ini membuat proses penggelaran dan menjalankan aplikasi di lingkungan yang berbeda menjadi mudah.
Apa itu Docker?
Buruh pelabuhan adalah platform pengembangan yang menyediakan alat dan lingkungan untuk mengemas aplikasi sebagai gambar portabel yang dapat dijalankan sebagai komponen mandiri yang dapat dieksekusi dalam wadah.
Kontainer ini merupakan kode aplikasi dan dependensi yang diperlukan agar aplikasi dapat berjalan dengan sukses di lingkungan runtime yang berbeda tanpa masalah.
Sebelum memulai, instal Docker di mesin lokal Anda. Periksa prasyarat khusus platform dan instruksi pemasangan dari dokumentasi resmi.
Buat REST API Node.js
Untuk memulai, buat server web Node.js.
Anda dapat menemukan kode aplikasi ini di dalamnya repositori GitHub.
Selanjutnya, instal paket yang diperlukan untuk proyek ini.
npm instal morgan pg knex
Itu hal paket digunakan untuk membuat koneksi dengan database PostgreSQL. lutut, sebaliknya, menyediakan API sederhana untuk berinteraksi dengan PostgreSQL — Anda akan menggunakannya untuk menulis kueri SQL.
Terakhir, Anda akan menggunakan morgan, sebuah middleware yang mencatat permintaan dan respons HTTP di konsol, untuk men-debug dan memantau aplikasi Anda yang berjalan di wadah Docker.
Akhirnya, buka index.js file, dan tambahkan kode di bawahnya mengimplementasikan REST API sederhana dengan tiga jalur.
const mengungkapkan = memerlukan("cepat")
const morgan = memerlukan("morgan")
const aplikasi = ekspres()
const db = memerlukan('./db')
const PORT = proses.env. PELABUHAN || 5000app.use (morgan('dev'))
aplikasi.gunakan (express.json())
app.use (express.urlencoded({ diperpanjang: BENAR }))aplikasi.dapatkan('/', (req, res) => res.kirim('Halo Dunia!' ))
aplikasi.dapatkan('/pengguna', asinkron (req, res) => {
const pengguna = menunggu db.pilih().dari('pengguna')
res.json (pengguna)
})aplikasi.posting('/pengguna', asinkron (req, res) => {
const pengguna = menunggu db('pengguna').menyisipkan({ nama: req.body.name }).returning('*')
res.json (pengguna)
})
app.listen (PORT, () => menghibur.catatan(`Server di PORT:${PORT}`))
Konfigurasi Koneksi Database
REST API akan berinteraksi dengan instance PostgreSQL Docker, namun, Anda harus terlebih dahulu mengonfigurasi koneksi database di aplikasi Anda. Di direktori root folder proyek Anda, buat a db.js file dan tambahkan kode di bawah ini.
const lutut = memerlukan('lutut')
modul.ekspor = knex({
klien: 'postgres',
koneksi: {
tuan rumah: 'db',
pengguna: 'pengguna uji',
kata sandi: 'kata sandiku123',
basis data: 'pengguna uji',
},
})
Siapkan File migrasi.js dan seed.js
Kedua file ini akan memungkinkan untuk membuat tabel di database dan mengisinya dengan data pengujian melalui API. Buat map baru, skrip, di direktori root proyek Anda dan tambahkan dua file: migrasi.js Dan seed.js.
Dalam migrasi.js file, tambahkan kode di bawah ini:
const db = memerlukan('../db');
(asinkron () => {
mencoba {
menunggu db.schema.dropTableIfExists('pengguna')
menunggu db.skema.denganSkema('publik').buat tabel('pengguna', (tabel) => {
table.increments()
tabel.string('nama')
})
menghibur.catatan('Membuat tabel pengguna!')
proses.keluar(0)
} menangkap (salah) {
menghibur.log (salah)
proses.keluar(1)
}
})()
Kode ini akan membuat pengguna tabel dengan kolom id penambahan otomatis dan a nama kolom dalam database.
Selanjutnya, di seed.js file, tambahkan kode di bawah ini:
const db = memerlukan('../db');
(asinkron () => {
mencoba {
menunggu db('pengguna').menyisipkan({ nama: 'Uji Pengguna1' })
menunggu db('pengguna').menyisipkan({ nama: 'Uji Pengguna2' })
menghibur.catatan('Menambahkan pengguna dummy!')
proses.keluar(0)
} menangkap (salah) {
menghibur.log (salah)
proses.keluar(1)
}
})()
Kode ini mengimplementasikan fungsi asinkron yang akan memasukkan dua pengguna ke dalam database PostgreSQL.
Terakhir, tambahkan perintah ini ke file Anda package.json mengajukan.
"skrip": {
"awal": "simpul index.js",
"migrasi": "skrip simpul/migrasi.js",
"benih": "skrip simpul/seed.js"
},
Karena Anda belum mengonfigurasi klien, untuk menguji API, Anda perlu menjalankan kedua file sebagai skrip di samping npm dijalankan memerintah.
Siapkan Dockerfile
Dockerfile menentukan instruksi yang diperlukan oleh mesin Docker untuk membuat image Docker. Di direktori root proyek Anda, buat file baru dan beri nama, Dockerfile. Kemudian, tambahkan instruksi berikut untuk membuat image Docker untuk aplikasi Node.js.
DARI simpul:16.3.0-alpine3.13
WORKDIR /app
MENYALIN paket*.json ./
BERLARI instal npm
MENYALIN. .
MEMBUKA8000
CMD [ "simpul", "index.js" ]
Mari kita uraikan:
- DARI - Instruksi ini menetapkan gambar dasar untuk aplikasi, yaitu gambar Alpine Node.js, versi ringan dari gambar Node.js yang dapat ditemukan di registri Docker.
- WORKDIR - set /app direktori sebagai direktori kerja.
- MENYALIN paket*.json./ - menginstruksikan Docker untuk menyalin semua file dengan format nama file tersebut dari direktori saat ini ke direktori /app map.
- BERLARI - mengeksekusi dan membangun gambar.
- MENYALIN.. - menyalin file sumber ke dalam /app map.
- MEMBUKA - ini menginstruksikan Docker untuk mengekspos port di dalam container ke lingkungan eksternal, dalam hal ini, mesin host.
- CMD - menentukan perintah yang akan dijalankan saat wadah Docker dibuat dari gambar.
Buat File Tulis Docker
Agar aplikasi Node.js dapat berinteraksi dengan instance PostgreSQL Docker, kedua aplikasi tersebut perlu dijalankan dalam wadah Docker dalam lingkungan jaringan yang sama.
Untuk alasan ini, Anda perlu mendefinisikan dan membangun image aplikasi dan instance PostgreSQL menggunakan Komposisi Docker — alat yang memungkinkan Anda membuat dan mengelola beberapa kontainer Docker.
Sederhananya, menggunakan Docker Compose, Anda dapat menentukan layanan yang menyusun aplikasi Anda sebagai satu kesatuan, dalam hal ini, REST API Node.js dan database PostgreSQL.
Buat berkas baru, docker-compose.yml, di direktori root dan tambahkan kode di bawah ini:
Versi: kapan:'3.9'
jasa:
pelayan:
membangun:.
port:
-'5000:5000'
tergantung pada:
-db
db:
gambar:'postgres'
port:
-'4321:5432'
lingkungan:
POSTGRES_PASSWORD:'kata sandiku123'
POSTGRES_USER:'pengguna uji'
volume:
-data:/var/lib/postgresql/data
volume:
data:
Kode ini akan membuat dan menjalankan dua wadah Docker. Wadah pertama, server, Docker Compose menggunakan Dockerfile untuk membuat image untuk container ini.
Ini juga menentukan bahwa wadah server tergantung pada db wadah. Artinya, server wadah harus dimulai setelah db wadah untuk terhubung dengannya.
Wadah kedua adalah wadah database PostgreSQL. Anda tidak perlu menentukan Dockerfile untuk container ini karena akan dibuat dari image PostgreSQL di registry image Docker.
Bangun Gambar Docker
Gunakan perintah Docker Compose untuk membuat image dan memulai kedua container.
docker-compose up -d
Anda akan melihat respons serupa setelah proses berhasil diselesaikan.
Uji REST API
Jalankan perintah di bawah ini untuk menguji REST API yang berjalan di container Docker. Itu harus membuat tabel di database PostgreSQL.
docker exec docker_node-server-1 npm jalankan migrasi
Anda akan melihat respons yang serupa.
Berbagi Gambar Docker
Langkah terakhir adalah mendorong image Docker untuk aplikasi Node.js Anda ke Docker Hub. Ini mirip dengan mendorong proyek Anda ke GitHub.
- Pergilah ke Docker Hub dan daftar akun dan masuk ke dasbor pengguna.
- Selanjutnya, klik Buat Repositori. Berikan nama repositori Anda dan setel visibilitasnya ke keduanya Publik atau Pribadi lalu klik Membuat.
- Untuk mendorong gambar Docker aplikasi Anda ke Docker Hub, pertama-tama Anda harus masuk ke akun Anda melalui terminal dan kemudian memberikan nama pengguna dan kata sandi Anda.
masuk buruh pelabuhan
- Selanjutnya, perbarui nama gambar Docker Anda agar sesuai dengan format ini:
/ . Jalankan perintah di bawah ini untuk melakukan perubahan ini:
tag buruh pelabuhan /
- Terakhir, dorong gambar Docker Anda.
dorongan buruh pelabuhan /
Menggunakan Docker dalam Pengembangan
Panduan ini hanya menyentuh sebagian kecil dari potensi yang ditawarkan Docker. Namun, Anda sekarang dapat menggunakan teknologi containerisasi Docker untuk mengemas aplikasi apa pun dan semua dependensinya gambar yang dapat digunakan dalam pengembangan yang berbeda, serta, lingkungan produksi seperti cloud tanpa apa pun cegukan.