Dockerfile adalah resep untuk membuat image Docker.
Ini adalah alur kerjanya:pertama Anda membuat Dockefile, lalu Anda membuat image Docker darinya menggunakan docker build
, dan akhirnya Anda menjalankan wadah dari gambar.
Dockerfile adalah file teks dengan instruksi tentang cara membuat gambar.
Instruksi tersebut adalah bagian dari bahasa konfigurasi, yang menyertakan kata kunci seperti FROM
, LABEL
, RUN
, COPY
, ENTRYPOINT
, CMD
, EXPOSE
, ENV
dan banyak lagi.
Mari kita buat Dockerfile pertama kita:
Katakanlah Anda memiliki folder dengan aplikasi Node.js sederhana yang disusun oleh app.js
, sebuah package.json
file yang mencantumkan beberapa dependensi yang perlu Anda instal sebelum menjalankan aplikasi, dan package-lock.json
.
Di dalamnya, buat file teks biasa bernama Dockerfile
, tanpa ekstensi, dengan konten ini:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json app.js ./
RUN npm install
EXPOSE 3000
CMD ["node", "app.js"]
CATATAN:gunakan tanda kutip ganda di
CMD
garis. Kutipan tunggal akan menghasilkan kesalahan.
Di baris pertama kami mengatakan gambar mana yang ingin kami mulai. Ini akan menjadi gambar dasar kami. Dalam hal ini akan mengambil image Node.js resmi, berdasarkan Alpine Linux, menggunakan Node 14. Saat membuat container dari Dockerfile, Docker akan mendapatkan image tersebut dari Docker Hub.
Selanjutnya kita atur direktori kerja ke /usr/src/app
, yang berarti semua perintah kita akan dijalankan di folder itu sampai kita mengubahnya lagi. Itu folder yang kami tahu sudah ada di gambar Node.
Kami menyalin package.json
, package-lock.json
(menggunakan *
wildcard) dan app.js
file yang ada di folder saat ini, ke dalam direktori kerja.
Kami menjalankan npm install
untuk menginstal paket yang terdaftar di package.json
berkas.
Kemudian kami mengekspos port 3000 ke luar, karena itulah aplikasi kami berjalan. Wadah 100% diisolasi dari jaringan kecuali Anda mengekspos salah satu portnya menggunakan EXPOSE
memerintah. Nanti kita akan melihat bagaimana kita dapat memetakan port di komputer kita ke port di wadah Docker.
Akhirnya kami menjalankan node app.js
untuk memulai aplikasi.
Ini adalah Dockerfile, dan kita akan segera melihat cara membuat container darinya.