Taufik Mulyana
Taufik Mulyana
Linux System Administrator, Interested in Linux, Cloud, Containers
December 11, 2018 3 min read

Deploy Aplikasi Node.js ke Docker Container

nodejs

Deploy Aplikasi Node.js ke Docker Container, Docker dan Node.js keduanya merupakan teknologi yang sedang nge-hype saat ini, Docker yang merupakan sebuah container dan node.js yang merupakan sebuah javascript runtime, dengan Docker anda bisa melakukan proses deployment aplikasi node.js menjadi lebih mudah, anda bisa menjalankan aplikasi anda seperti biasanya namun bedanya aplikasi yang anda jalankan berada dalam sebuah container, dalam container ini telah tersedia depedency, pustaka, dan anda juga bisa mengunduh paket yang anda butuhkan, pada environtment container ini aplikasi akan berjalan secara konsisten, ketika anda menjalankannya di server development, staging ataupun production aplikasi akan berjalan sama persis, jadi tidak ada kata ” di lokal jalan kok bro 😀 ”

Membuat Aplikasi Node.js Sederhana

jika anda belum memasang Node.js sebelumnya, silahkan merujuk ke pranala ini install nodejs via package manager, setelah anda memasangnya buat direktori halonodejs dan lakukan iniliasi npm

$ mkdir halonodejs
$ cd halonodejs
$ npm init

package name: (halonodejs) 
version: (1.0.0) 
description: aplikasi nodejs sederhana
entry point: (index.js) app.js
test command: 
git repository: 
keywords: 
author: taufik
license: (ISC) MIT
About to write to /home/nothinux/Development/nodejs/halonodejs/package.json:

{
  "name": "halonodejs",
  "version": "1.0.0",
  "description": "aplikasi nodejs sederhana",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "taufik",
  "license": "MIT"
}
Is this OK? (yes) yes

lalu akan membuat sebuah berkas package.json, masih dalam direktori halonodejs kita akan menambahkan express dan memasangnya pada proyek halonodejs

$ npm install express --save

lalu kita buat aplikasinya yang bernama app.js

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Halo Node.js!');
});

app.listen(3000, function () {
  console.log('aplikasi berjalan pada port 3000!');
});

lalu coba jalankan dengan perintah

$ node app.js

Membuat Dockerfile

selanjutnya kita akan membuat sebuah image yang nantinya kita sertakan juga aplikasi yang dibuat node.js tadi, kita kan menggunakan base image nodejs 11.4.0 yang menggunakan alpine linux agar image lebih ramping

FROM node:11.4.0-alpine

WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD ["node", "app.js"]
EXPOSE 3000

pada intruksi Dockerfile diatas saya menyetel ruang kerja ke /app, menyalin packake.json dan menjalankan npm install, kenapa tidak menyalin semuanya langsung kenapa hanya package.json saja, agar saat anda melakukan build lagi docker akan menggunakan cache dengan catatan berkas package.json belum berubah, selanjutnya baru kita menyalin aplikasinya ke direktori /app lalu menjalankan aplikasinya dan tidak lupa meng-expose port yang digunakan

baca juga  Mengenal Docker

build dengan perintah berikut

$ sudo docker build -t taufik/halonodejs:1.0 .

lalu kita coba jalankan

$ sudo docker run -d --name halonodejs -p 3000:3000 taufik/halonodejs:1.0

dengan perintah diatas kita menjalankan container dengan nama halonodejs dengan port 3000 dari image taufik/halonodejs:1.0 dalam mode detach, bisa kita cek apakah container telah berjalan dengan perintah berikut

$ sudo docker ps

CONTAINER ID IMAGE                 COMMAND       CREATED        STATUS        PORTS                  NAMES
5283ea7333f8 taufik/halonodejs:1.0 "node app.js" 10 minutes ago Up 10 minutes 0.0.0.0:8080->3000/tcp halonodejs

kita juga bisa coba akses port 3000 menggunakan curl

$ curl localhost:3000
Halo Node.js!

Leave a Reply

Your email address will not be published. Required fields are marked *