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.biz.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 namamasdika-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 kamumasdika
-p 80:8080
: mengarahkan port 8080 di dalam container ke port 80 host agar bisa diakses publikmasdika-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! ❤️
Thankyou mas