Update Docker Image Tanpa Hentikan Layanan: Solusi untuk Production!

Menjaga agar layanan tetap berjalan tanpa henti adalah kunci keberhasilan sebuah sistem production. Artikel ini membahas cara update Docker container tanpa downtime, serta mengotomatisasi proses tersebut menggunakan Watchtower. Pendekatan ini sangat cocok untuk layanan penting seperti email server, database, ataupun web server berbasis Docker.
❌ Masalah Umum Saat Update Container
Kebanyakan pengguna melakukan update seperti ini:
docker compose down
docker compose pull
docker compose up -d
Sayangnya, ini menyebabkan downtime karena container dimatikan dulu sebelum dijalankan kembali.
✅ Solusi: Update Tanpa Downtime
Gunakan perintah berikut agar container direstart dengan image terbaru tanpa menghentikan service lainnya:
docker compose up -d --no-deps --force-recreate
Contoh struktur direktori:
/home/andika/mail.masdika.biz.id/
├── data/
└── docker-compose.yml
Isi docker-compose.yml
:
services:
mailserver:
image: analogic/poste.io
container_name: poste
restart: always
hostname: mail.masdika.biz.id
ports:
- "25:25"
- "465:465"
- "587:587"
- "110:110"
- "143:143"
- "993:993"
- "80:80"
- "443:443"
- "4190:4190"
environment:
- HTTPS=ON
volumes:
- ./data:/data
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
watchtower:
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --cleanup --rolling-restart
🔧 Langkah Update Manual Tanpa Downtime
- Masuk ke direktori project:
cd /home/andika/mail.masdika.biz.id
- Tarik image terbaru:
docker compose pull
- Jalankan ulang container dengan image baru:
docker compose up -d --no-deps --force-recreate
- Cek status container:
docker ps
- (Opsional) Hapus image lama yang tidak digunakan:
docker image prune -f
🧠 Kenapa Wajib Pakai healthcheck:
?
Healthcheck memberi tahu Docker kapan container siap digunakan. Ini penting untuk:
- Load balancer
- Monitoring tools seperti Prometheus
- Restart otomatis yang aman dengan Watchtower
🤖 Otomatisasi Update dengan Watchtower
Watchtower adalah tool yang memantau container Docker, dan jika image terbaru tersedia, dia akan otomatis:
- Pull image
- Restart container dengan aman
- Menghapus image lama
Watchtower juga mendukung rolling-restart, jadi tidak semua container dimatikan bersamaan.
Setelah semua dijalankan:
docker compose up -d
Cek hasil:
docker ps
CONTAINER ID IMAGE ... NAMES
9f3e878893da containrrr/watchtower watchtower
fe5c4ab54d9f analogic/poste.io poste

⚙️ Tips Produksi
- Gunakan tag
:latest
hanya jika siap menerima update otomatis - Backup volume secara berkala
- Aktifkan logging dan pemantauan (Promtail, Grafana, dsb)
- Gunakan VPS dengan kernel modern dan I/O cepat
📌 Kesimpulan
Dengan kombinasi docker compose
dan Watchtower, kamu bisa melakukan update container tanpa downtime, dan bahkan mengotomatisasinya. Ini sangat penting terutama jika kamu menjalankan layanan yang bersifat kritikal seperti email, database, reverse proxy, atau monitoring.
Tidak hanya mempermudah deployment, pendekatan ini juga memperkuat postur keamanan dengan selalu menggunakan image terbaru yang sudah ditambal keamanannya.