Skip to content

jokopurwanto/docker-express-app

Repository files navigation

Deploy Web App Expressjs ke Docker

Melanjutkan pada pembahasan sebelumnya project web sederhana menggunakan nodejs & express. Pada pembahasan kali ini kita akan coba mendeploy aplikasi express ke docker menggunakan project sebelumnya dengan struktur project yang sama

myApp

Membuat .dockerignore

Buat file baru dengan nama .dockerignore, lalu isikan node_modules, .tmp dan .log, tujuannya untuk mencegah agar file-file tersebut tidak tersalin dan tidak menimpa module yang di install di docker image

node_modules
.tmp
.log

dockerignore

Membuat Dockerfile dan Build Image

Buat file baru dengan nama Dockerfile, lalu isikan dengan baris instruksi berikut

FROM node:lts-alpine
RUN mkdir -p /src/app
WORKDIR /src/app
COPY package*.json ./
RUN npm install
COPY . ./
EXPOSE 3000
CMD [ "npm", "start" ]

Dockerfile

  • FROM instruksi untuk inisialisasi base image, base image yang digunakan node:lts-alpine
  • RUN instruksi untuk mengeksekusi perintah, perintah yang di eksekusi
    • mkdir untuk membuat folder baru
    • npm install untuk menginstal semua dependency yang diperlukan oleh project
  • WORDIR instruksi untuk mendefinisikan direktori yang digunakan sebagai area kerja, area kerja yang digunakan untuk menaruh source code aplikasi yaitu /src/app
  • COPY instruksi untuk menyalin file atau direktori dari lokal ke system docker image, file atau direktori yang di salin
    • copy package*.json ./ yaitu menyalin file package.json dan package-lock.json ke WORDIR atau area kerja
    • copy . ./ yaitu menyalin seluruh file dan direktori pada project ke WORDIR atau area kerja
  • EXPOSE instruksi untuk melisten port, port yang digunakan yaitu 3000
  • CMD instruksi untuk mengeksekusi perintah. Perbedaan dengan RUN yaitu RUN mengeksekusi perintah ketika proses build image baru sedangkan CMD mengeksekusi perintah ketika container dijalankan selain itu CMD bisa menspesifikasikan perintah atau parameter. Perintah yang di eksekusi yaitu npm start untuk menjalankan aplikasi

Setelah selesai membuat instruksi Dockerfile, jalankan perintah build image

$ docker build -t docker-expressjs:0.0.1 .

docker-build

  • -t digunakan untuk membuat nama pengguna (opsional), nama image dan tag dengan format penulisan “nama-pengguna/nama-image:tag”

Setelah proses build selesai, lakukan pengecekan docker image dengan perintah

$ docker images

docker-images

Membuat Docker Container

Jalankan image yang telah dibuat pada docker container dengan perintah

$ docker run -d --name myExpressApp -p 3000:3000 docker-expressjs:0.0.1

docker-run

  • -d digunakan untuk menjalankan container di mode detached
  • --name digunakan untuk memberikan nama container
  • -p digunakan untuk mengekspos port ke host dengan format penulisan "host port":"exposed container port"

Lalu cek container yang sedang aktif saat ini dengan perintah

$ docker ps

docker-run

Test Web Server pada Docker Host

Kemudian test akses docker container yang aktif melalui web browser dengan URL http://localhost:3000, maka akan ditampilkan halaman express project

testApp