Karena saya fokus cara build image untuk node.js, jadi saya asumsikan aplikasi nya sudah tersedia sebelumnya, mulai dari file package.json, terus instalasi dependency untuk menjalankan aplikasi tersebut yang bisa dijalankan dengan npm install.
Maka setelah semuanya itu sudah tersedia, maka tahap pertama untuk docker image nya adalah membuat Dockerfile.
Ini adalah contoh Dockerfile yang saya gunakan untuk image yang akan saya build:
FROM node:10
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package*.json ./
RUN npm install
COPY . .
COPY --chown=node:node . .
USER node
EXPOSE 8080
CMD [ "npm", "start" ]
Penjelasan isi Dockerfile:
FROM node:10
artinya adalah kita akan menambahkan base image dari node dengan versi 10 ke dalam aplikasi kita, karena kita mau mem-build image node.js
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
artinya membuat direktori untuk aplikasi kita, dan memberikan akses penuh kepada user node untuk folder tersebut.
WORKDIR /home/node/app
artinya adalah kita akan menentukan working directory dari aplikasi kita.
COPY package*.json ./
untuk copy file package*.json ke working directory kita pada container.
RUN npm install
untuk proses instalasi dependency untuk aplikasi kita pada container.
COPY . .
untuk copy application directory kita kedalam container.
COPY --chown=node:node . .
untuk copy permission dari aplikasi directory ke direktori yang ada pada container.
USER node
untuk set user menjadi node
EXPOSE 8080
untuk mempublish port 8080 pada container ketika container dijalankan
CMD [ "npm", "start" ]
perintah untuk menjalankan aplikasi
----eof----
Setelah kita selesai membuat Dockerfile untuk node.js, selanjutnya adalah kita mem-build Dockerfile tersebut menjadi sebuah docker image.
Build docker image dapat dilakukan dengan cara:
docker build -t my-node-js .
perintah docker build adalah command yang digunakan ketika ingin mem-build sebuah docker image, -t adalah sebagai parameter tag, dan my-node-js adalah nama image yang akan dibuild.
Sekian yang bisa saya share kali ini,
Terima Kasih.
No comments:
Post a Comment