Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Dari Laptop Bekas Jadi Server Pribadi: Cara Membangun Home Server Murah Menggunakan ISP MyRepublic dengan Public IP
  • Pembuatan Subnet dan Alokasi IP Address pada Amazon Web Service VPC
  • Instalasi dan Konfigurasi AWS CLI pada EC2 (Lab Guide)
  • Membangun Arsitektur Web + Database Highly Available di AWS (RDS Multi-AZ)
  • Cara Reset Password OpenBSD di Proxmox via VNC

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Cara Mudah Deploy Website Node.js Menggunakan Docker

July 22, 2025 Tutorial by Masdika.ID
Cara Mudah Deploy Website Node.js Menggunakan Docker

Ingin hosting website kamu dengan cepat, ringan, dan fleksibel? 🔥 Artikel ini cocok banget buat kamu yang ingin belajar cara deploy website Node.js menggunakan Docker tanpa ribet!

Langkah ini cocok untuk website hasil build dari framework seperti Vue, React, atau bahkan HTML manual. Kita akan pakai Node.js sebagai server statis, dibungkus dengan Docker. Yuk, kita mulai! 😎

🔧 Apa yang Akan Kita Lakukan?

  • ✅ Download project website
  • ✅ Menambahkan server Node.js untuk serve file statis
  • ✅ Membuat Dockerfile
  • ✅ Build Docker image
  • ✅ Jalankan container

🌎 Langkah-langkah Deploy Website Node.js

1. Download Folder Website

Pertama, download project web yang sudah disiapkan menggunakan wget:

wget https://www.masdika.id/wp-content/uploads/2025/07/nodejs-test.zip
unzip nodejs-test.zip
cd nodejs-test

Struktur folder-nya akan seperti ini:

assets/  css/  js/  index.html

2. Tambahkan Server Node.js (index.js)

Pastikan ada file index.js untuk serve file HTML secara statis:

const http = require('http');
const fs = require('fs');
const path = require('path');

const port = 8080;

http.createServer((request, response) => {
    console.log('Request:', request.url);
    let filePath = '.' + request.url;
    if (filePath === './') filePath = './index.html';

    const extname = String(path.extname(filePath)).toLowerCase();
    const mimeTypes = {
        '.html': 'text/html',
        '.js': 'text/javascript',
        '.css': 'text/css',
        '.png': 'image/png',
        '.jpg': 'image/jpg',
        '.svg': 'image/svg+xml'
    };

    const contentType = mimeTypes[extname] || 'application/octet-stream';

    fs.readFile(filePath, (err, content) => {
        if (err) {
            if (err.code === 'ENOENT') {
                response.writeHead(404, { 'Content-Type': 'text/html' });
                response.end('404 Not Found', 'utf-8');
            } else {
                response.writeHead(500);
                response.end(`Server Error: ${err.code}`);
            }
        } else {
            response.writeHead(200, { 'Content-Type': contentType });
            response.end(content, 'utf-8');
        }
    });
}).listen(port);

console.log(`Server running at http://0.0.0.0:${port}`);

3. Buat Dockerfile

File Dockerfile digunakan untuk build image custom dengan Node.js:

FROM node:alpine3.18

RUN apk update --no-cache && apk upgrade && apk add nano bash --no-cache
RUN npm install -g pm2@latest

WORKDIR /node-website
COPY . .

RUN npm init -y

EXPOSE 8080
CMD ["pm2-runtime", "index.js", "--name", "masdika"]

4. Buat .dockerignore

Supaya build-nya lebih bersih:

echo "Dockerfile" > .dockerignore
echo ".dockerignore" >> .dockerignore

5. Build Docker Image 🛠️

Sekarang kita akan membungkus semua file ini ke dalam sebuah Docker image. Jalankan perintah berikut di terminal:

docker build -t masdika-nodejs .

Penjelasan:

  • docker build: perintah untuk membuat image
  • -t masdika-nodejs: memberi nama masdika-nodejs pada image
  • .: artinya build context berada di direktori saat ini

Proses ini akan membaca Dockerfile dan membuat image siap pakai. 🎁

6. Jalankan Docker Container 🚢

Setelah image berhasil dibangun, saatnya menjalankan container dari image tersebut:

docker run -d --name masdika -p 80:8080 masdika-nodejs

Penjelasan:

  • -d: jalankan container dalam mode background
  • --name masdika: beri nama container kamu masdika
  • -p 80:8080: mengarahkan port 8080 di dalam container ke port 80 host agar bisa diakses publik
  • masdika-nodejs: nama image yang barusan kamu build

Setelah dijalankan, kamu bisa langsung akses website kamu via browser di:

http://localhost

Atau kalau kamu menjalankannya di VPS:

http://IP-VPS-KAMU

🎉 Selamat! Website Node.js kamu sekarang sudah online dan berjalan di atas Docker!

📦 Penutup

Dengan cara ini, kamu bisa dengan mudah deploy website apapun yang berbasis Node.js. Cukup siapkan folder, tambahkan index.js sebagai server, siapkan Dockerfile, lalu build dan run. Simpel dan scalable! 😎

Kamu bisa kembangkan lebih lanjut dengan menambahkan:

  • Reverse proxy (pakai NGINX atau Caddy)
  • SSL otomatis dari Let’s Encrypt
  • Integrasi Docker Compose
  • CI/CD biar makin profesional

Semoga tutorial ini bermanfaat! Jangan lupa share ke teman-teman kamu ya! ❤️

Share:
Tags: dockerdockerfilenode.js
Related Posts
VM vs Container vs Pod – Perbedaan Lengkap untuk Cloud & DevOps!

Dalam dunia Cloud Computing dan DevOps, tiga istilah yang paling sering kita dengar adalah Virtual Machine (VM), Container, dan Pod….

Deploy Go REST API di Kubernetes (K3s) dengan PostgreSQL, SSL Cloudflare, dan Autoscaling

Artikel ini akan membahas langkah end-to-end untuk membangun aplikasi Go REST API, membuat image Docker, lalu melakukan deployment di Kubernetes…

Post navigation

Prev
Next
1 Comment
  • Rikiy 11:45 pm July 22, 2025 Reply

    Thankyou mas

Write a comment Cancel Reply


© 2025 www.masdika.id — Semua hak cipta dilindungi