Kesempatakan kali ini saya ingin mencontohkan bagaimana menjalankan aplikasi Node.js sederhana di Docker Container.
Buat Aplikasi Node.js
Pada contoh ini kita coba buat contoh aplikasi node.js yang paling dasar. Hanya sekedar test-run output pada browser “Hello World” dan message console.
File packages.json
Pertama, pada workdir Anda buat file packages.json
kemudian jalankan perintah npm install
untuk generate file packages-json.lock
yang akan nanti kita copy ke docker images kita.
{
"name": "docker_nodejs-helloworld",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "Modalsemangat.com",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.18.2"
}
}
File server.js
Kemudian, buat file server.js
contoh web apps sederhana yang hanya menggunakan framework Express.js.
'use strict';
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hallo Dunia');
});
app.listen(PORT, HOST, () => {
console.log(`Running on http://${HOST}:${PORT}`);
});
Selanjutnya, kita akan mencoba menjalankan aplikasi ini di dalam docker container.
Membuat Node.js Docker Image
Kita akan membuat Docker Image yang dibutuhkan untuk menjalankan aplikasi Anda.
File Dockerfile
Pada contoh ini kita akan menggunakan image node.js yang sudah disediakan dari Docker Hub. Contoh ini saya pakai versi terakhir node
tag lts-alpine
.
FROM node:lts-alpine
# app directory
WORKDIR /app
# Copy file packages.json & packages-json.lock untuk install app dependencies
COPY package*.json ./
# Install app dependencies
RUN npm install
COPY . .
# Expose port yang digunakan app, samakan dengan parameter port server.js Anda.
EXPOSE 8080
CMD [ "node", "server.js" ]
Contoh isi file nya akan seperti ini.
File .dockerignore
Buat file .dockerignore
agar mencegah directory module & file log tidak ikut di copy ke docker image.
node_modules
npm-debug.log
Build Docker Image
Jalankan perintah berikut dalam folder yang terdapat file Dockerfile untuk mulai build docker image.
docker build . -t <username_anda>/nodejs-helloworld
Jalankan Docker Image
Setelah docker images sukses dibuat, ketik perintah berikut untuk menjalankan Node.js Docker Image pada Container Docker.
docker run --name nodejs-helloworld -p 8080:8080 -d <your username>/nodejs-helloworld