Advertisement

Menulis Dockerfile untuk Aplikasi Node.js atau Python

 File:Docker (container engine) logo.svg


“Docker itu susah!” – Orang yang belum baca artikel ini.

Kalau kamu sering pusing tiap kali harus deploy aplikasi Node.js atau Python, tenang! Dockerfile adalah penyelamatmu! Dengan Dockerfile, kita bisa bikin image aplikasi yang bisa dijalankan di mana saja tanpa ribet setting ulang!

Di artikel ini, kita akan belajar:
  Apa itu Dockerfile dan kenapa penting?
  Menulis Dockerfile untuk aplikasi Node.js
  Menulis Dockerfile untuk aplikasi Python
  Tips & trik supaya Dockerfile kamu lebih efisien!

Siap? Yuk, ngedocker bareng!

1. Apa Itu Dockerfile?

Dockerfile adalah file teks sederhana yang berisi instruksi untuk membangun Docker Image.

Kalau Docker Image itu ibarat martabak, Dockerfile adalah resepnya!

Kenapa Dockerfile itu penting?

 Otomatisasi → Nggak perlu setting ulang tiap kali deploy.
  Konsistensi → Semua developer pakai environment yang sama.
  Portabilitas → Bisa dijalankan di mana saja selama ada Docker.
  Efisiensi → Mengurangi error karena “Kok di laptopku jalan, tapi di server error?”

Sekarang, mari kita buat Dockerfile untuk aplikasi Node.js dan Python!

2. Dockerfile untuk Aplikasi Node.js

Misalkan kita punya aplikasi Node.js sederhana dengan 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!\n');
});

server.listen(3000, () => {
  console.log('Server running on port 3000');
});

 Langkah 1: Buat Dockerfile untuk Node.js

Buat file Dockerfile di dalam folder proyek dan isi dengan kode berikut:

# 1️ Gunakan base image Node.js versi ringan
FROM node:18-alpine

# 2️ Set direktori kerja di dalam container
WORKDIR /app

# 3️ Copy file package.json dan package-lock.json
COPY package*.json ./

# 4️ Install dependencies
RUN npm install

# 5️ Copy semua file ke dalam container
COPY . .

# 6️ Tentukan port yang akan digunakan
EXPOSE 3000

# 7️ Jalankan aplikasi saat container dimulai
CMD ["node", "server.js"]

 Langkah 2: Buat file .dockerignore

Supaya image lebih ringan, kita bisa mengabaikan file yang nggak perlu, seperti node_modules dan .git.

Buat file .dockerignore dan isi dengan:

node_modules
.git
.env

 Langkah 3: Build dan Jalankan Docker Image

 Bangun image dari Dockerfile:

docker build -t my-node-app .

 Jalankan container:

docker run -d -p 3000:3000 my-node-app

 Cek aplikasi di browser:
Buka http://localhost:3000 dan lihat "Hello from Dockerized Node.js App!"

3. Dockerfile untuk Aplikasi Python

Sekarang kita coba Dockerfile untuk aplikasi Python!

Misalkan kita punya aplikasi Python sederhana:

Buat file app.py dengan isi berikut:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello from Dockerized Python App!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

Buat file requirements.txt untuk daftar dependensi:

flask

 Langkah 1: Buat Dockerfile untuk Python

Buat file Dockerfile dan isi dengan:

# 1️ Gunakan base image Python
FROM python:3.10-alpine

# 2️ Set direktori kerja di dalam container
WORKDIR /app

# 3️ Copy file requirements.txt dan install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt

# 4️ Copy semua file ke dalam container
COPY . .

# 5️ Tentukan port yang akan digunakan
EXPOSE 5000

# 6️ Jalankan aplikasi saat container dimulai
CMD ["python", "app.py"]

 Langkah 2: Buat .dockerignore untuk Python

Supaya lebih ringan, buat file .dockerignore dengan isi:

__pycache__
*.pyc
*.pyo

 Langkah 3: Build dan Jalankan Docker Image

 Bangun image dari Dockerfile:

docker build -t my-python-app .

 Jalankan container:

docker run -d -p 5000:5000 my-python-app

 Cek aplikasi di browser:
Buka http://localhost:5000 dan lihat "Hello from Dockerized Python App!"

4. Tips & Trik Dockerfile Supaya Lebih Efisien!

 Gunakan base image yang lebih ringan
Misalnya, gunakan node:18-alpine atau python:3.10-alpine untuk menghemat ukuran image.

 Gunakan multi-stage build
Supaya container lebih ramping dan cepat.

 Gunakan .dockerignore untuk mengurangi ukuran image
Jangan biarkan container membawa file yang nggak perlu.

 Jangan jalankan aplikasi sebagai root
Gunakan user yang lebih aman di dalam Dockerfile:

RUN useradd -m appuser
USER appuser

 Gunakan cache build Docker dengan optimal
Susun perintah COPY dan RUN dengan benar supaya cache Docker bisa dimanfaatkan.

5. Kesimpulan: Dockerfile = Deploy Tanpa Drama!

 Intinya:
  Dockerfile adalah resep untuk bikin Docker Image.
  Node.js Dockerfile → Gunakan node:18-alpine, copy dependencies dulu, baru aplikasi.
  Python Dockerfile → Gunakan python:3.10-alpine, install requirements dulu, baru aplikasi.
  Optimasi dengan .dockerignore dan base image ringan.

Sekarang kamu bisa membuat Dockerfile untuk Node.js dan Python!

Post a Comment

0 Comments