Di artikel ini, kita bakal bikin Docker Image dari aplikasi Node.js sederhana, lalu menjalankannya sebagai container. Serius, ini gampang banget!
Step-by-step:
- Buat aplikasi Node.js sederhana
- Tulis Dockerfile untuk membuat image
- Build Docker Image
- Jalankan container dari image yang dibuat
Siap? Ayo mulai!
1. Buat Aplikasi Node.js Sederhana
Buat folder proyek baru:
mkdir my-docker-app && cd my-docker-app
Inisialisasi proyek Node.js:
npm init -y
Ini bakal membuat file package.json
.
Buat file server.js
:
const http = require("http");
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello from Dockerized Node.js App!");
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
Uji coba aplikasi secara lokal:
node server.js
Buka http://localhost:3000
, kalau muncul "Hello from Dockerized Node.js App!", berarti sukses!
2. Buat Dockerfile untuk Membuat Image
Dockerfile adalah resep untuk bikin image. Buat file Dockerfile
di folder proyek dan isi seperti ini:
# Gunakan image Node.js versi terbaru sebagai base image
FROM node:latest
# Set direktori kerja di dalam container
WORKDIR /app
# Copy file package.json dan package-lock.json (kalau ada)
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy semua file proyek ke dalam container
COPY . .
# Tentukan port yang akan digunakan
EXPOSE 3000
# Perintah untuk menjalankan aplikasi
CMD ["node", "server.js"]
Penjelasan Dockerfile:
FROM node:latest
→ Gunakan image Node.js terbaruWORKDIR /app
→ Set folder kerja di containerCOPY package*.json ./
→ Copy filepackage.json
RUN npm install
→ Install dependencyCOPY . .
→ Copy semua file proyek ke dalam containerEXPOSE 3000
→ Buka port 3000CMD ["node", "server.js"]
→ Jalankan aplikasi saat container mulai
3. Build Docker Image dari Aplikasi Node.js
Sekarang, kita bisa build Docker Image dari aplikasi ini!
docker build -t my-node-app .
Penjelasan:
docker build
→ Perintah untuk membuat image-t my-node-app
→ Nama image yang kita buat.
→ Gunakan Dockerfile yang ada di direktori saat ini
Kalau berhasil, bakal ada output seperti ini:
Successfully built abc123def456
Successfully tagged my-node-app:latest
Docker Image berhasil dibuat!
Cek daftar image yang ada di sistem:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-node-app latest abc123def456 5 minutes ago 150MB
4. Jalankan Container dari Docker Image yang Dibuat
Saatnya menjalankan container dari image kita!
docker run -d -p 3000:3000 my-node-app
Penjelasan:
-d
→ Jalankan di background (detached mode)-p 3000:3000
→ Hubungkan port host dengan containermy-node-app
→ Nama image yang dibuat sebelumnya
Cek apakah container berjalan:
docker ps
Kalau muncul daftar container dengan image my-node-app
, berarti berhasil!
Coba akses di browser:
Buka http://localhost:3000
, harusnya muncul teks:
Hello from Dockerized Node.js App!
5. Menghentikan dan Menghapus Container
Kalau mau menghentikan container, jalankan:
docker stop <CONTAINER_ID>
Untuk menghapus container:
docker rm <CONTAINER_ID>
Cek daftar container yang berjalan:
docker ps
6. Mengupload Image ke Docker Hub (Opsional)
Kalau mau share image ke Docker Hub, kita bisa upload dengan perintah ini:
1️ Login ke Docker Hub:
docker login
2️ Tag image sebelum push:
docker tag my-node-app username/my-node-app
3️ Upload image ke Docker Hub:
docker push username/my-node-app
Sekarang orang lain bisa langsung pakai image kita dengan:
docker pull username/my-node-app
7. Troubleshooting – Jika Ada Masalah!
Kasus 1: Perubahan di Kode Tidak Terdeteksi Setelah Build Ulang
Error:
Aplikasi tetap menjalankan kode lama meskipun sudah di-build ulang.
Solusi:
Gunakan --no-cache
saat build ulang:
docker build --no-cache -t my-node-app .
Kasus 2: Port 3000 Sudah Dipakai
Error:
Bind for 0.0.0.0:3000 failed: port is already allocated
Solusi:
Gunakan port lain:
docker run -d -p 4000:3000 my-node-app
Akses di http://localhost:4000.
Kesimpulan: Sekarang Kamu Punya Docker Image Sendiri!
Ringkasan Cepat:
Buat aplikasi Node.js sederhana (file server.js
)
Tulis Dockerfile untuk mendefinisikan image
Build image dengan docker build -t my-node-app .
Jalankan container dengan docker run -d -p 3000:3000 my-node-app
Akses aplikasi di http://localhost:3000
Sekarang aplikasi kamu bisa dibungkus dalam container, sehingga bisa dijalankan di mana saja tanpa ribet setting ulang!
0 Comments