UI vs. UX: What’s the difference?

Pengenalan Docker untuk Web Developer

Pengenalan Docker untuk Web Developer secara lebih detail dan step-by-step dari nol hingga kamu bisa membangun dan menjalankan aplikasi web menggunakan Docker, termasuk dengan Docker Compose. Yuk mulai!

Apa Itu Docker? (Lebih dalam)

Docker adalah platform untuk mengemas aplikasi dan semua dependensinya ke dalam container.
Dengan begitu, kamu bisa menjalankan aplikasi dengan konsisten di berbagai lingkungan (laptop, server, CI/CD, cloud).

Analogi Sederhana:

Bayangkan kamu ingin kirim aplikasi ke teman kamu. Kalau tanpa Docker:

  • Dia harus install Node.js
  • Harus setup database
  • Harus cocok versi package

Kalau pakai Docker:

  • Kamu tinggal kirim 1 box (container) berisi aplikasi lengkap, tinggal jalanin.

Bagaimana Docker Bekerja?

Docker bekerja dengan 2 konsep inti:

  1. Image: Template (seperti blueprint). Bersifat read-only. Dibuat dari Dockerfile.
  2. Container: Proses berjalan dari image. Ibaratnya aplikasi yang sedang hidup.

Instalasi Docker

Untuk Windows / Mac:

docker --version

Untuk Linux (Ubuntu):

sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker

Tambahkan user ke grup docker (biar gak pakai sudo):

sudo usermod -aG docker $USER

→ Lalu logout dan login lagi.

Uji Coba Pertama: Hello World!

docker run hello-world
  • Docker akan cek apakah image hello-world sudah ada
  • Kalau belum, dia download dari Docker Hub
  • Lalu menjalankan container dari image tersebut

Memahami Perintah Docker Dasar

PerintahKeterangan
docker psLihat container yang sedang berjalan
docker ps -aLihat semua container (termasuk yang mati)
docker imagesDaftar image yang ada di sistem
docker run Jalankan container dari image
docker stopHentikan container yang sedang berjalan
docker rmHapus container
docker rmiHapus image

Menjalankan Web Server Pakai Docker

Jalankan Nginx (tanpa install Nginx di laptopmu):

docker run -d -p 8080:80 nginx

Artinya:

  • -d: Detached mode (jalan di background)
  • -p 8080:80: Port 8080 (host) diarahkan ke port 80 (dalam container)

Buka http://localhost:8080 di browser. Muncul halaman default Nginx? Artinya sukses.

Membuat Aplikasi Web Sederhana dengan Docker

Struktur Folder:

myapp/
├── Dockerfile
├── index.js
├── package.json

1. index.js (Express App)

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

app.get('/', (req, res) => res.send('Hello from Docker!'));
app.listen(3000, () => console.log('Server running on port 3000'));

2. package.json

{
  "name": "docker-web-app",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "express": "^4.18.2"
  }
}

3. Dockerfile

FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]

Build & Run

Build image:

docker build -t myapp .

Jalankan container:

docker run -p 3000:3000 myapp

Buka di browser: http://localhost:3000
Output: "Hello from Docker!"

Bonus: Volume untuk Development

Supaya kamu bisa ngoding dan auto-reload, pakai volume + nodemon.

Install nodemon di devDependencies:

npm install --save-dev nodemon

Update package.json:

"scripts": {
  "dev": "nodemon index.js"
}

Jalankan:

docker run -v ${PWD}:/app -p 3000:3000 myapp npm run dev

Docker Compose (Multi-Container)

Contoh kasus: Web App + MongoDB

Struktur:

myapp/
├── docker-compose.yml
├── Dockerfile
├── index.js
└── package.json

docker-compose.yml

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - mongo
  mongo:
    image: mongo
    ports:
      - "27017:27017"

Jalankan semua:

docker-compose up --build

Stop:

docker-compose down

.dockerignore

Seperti .gitignore, agar file yang tidak perlu tidak masuk ke image.

Contoh .dockerignore:

node_modules
npm-debug.log
.env

Tahapan Belajar Lanjutan

  1. Belajar docker exec, docker logs, docker network
  2. Belajar base image lain (python, nginx, postgres, dll)
  3. Deploy ke VPS / DigitalOcean / Render / Railway
  4. Integrasi Docker di CI/CD pipeline (GitHub Actions, GitLab CI)
  5. Optimasi image (multi-stage build)

Penutup

Sebagai Web Developer, menguasai Docker adalah skill wajib zaman sekarang, apalagi jika:

  • Kamu kerja di tim besar
  • Sering deploy ke server
  • Sering pakai microservice
  • Butuh workflow yang rapi dan konsisten