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:
- Image: Template (seperti blueprint). Bersifat read-only. Dibuat dari
Dockerfile
. - Container: Proses berjalan dari image. Ibaratnya aplikasi yang sedang hidup.
Instalasi Docker
Untuk Windows / Mac:
- Download Docker Desktop dari: https://www.docker.com/products/docker-desktop
- Install → Restart PC (jika perlu)
- Buka terminal / CMD:
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
Perintah | Keterangan |
---|---|
docker ps | Lihat container yang sedang berjalan |
docker ps -a | Lihat semua container (termasuk yang mati) |
docker images | Daftar image yang ada di sistem |
docker run | Jalankan container dari image |
docker stop | Hentikan container yang sedang berjalan |
docker rm | Hapus container |
docker rmi | Hapus 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
- Belajar
docker exec
,docker logs
,docker network
- Belajar base image lain (python, nginx, postgres, dll)
- Deploy ke VPS / DigitalOcean / Render / Railway
- Integrasi Docker di CI/CD pipeline (GitHub Actions, GitLab CI)
- 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