Masdika Loading..
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portofolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • CI/CD Laravel: Otomatisasi Deployment dengan Jenkins & Docker
  • Cara Kirim Notifikasi Otomatis SSL Expired via Email (Lengkap + Bash Script)
  • Panduan Lengkap Autoscaling di Kubernetes Bare-Metal (Lengkap untuk Pemula)
  • Panduan Lengkap: Deploy Website Statis ke Kubernetes Menggunakan Docker + NodePort
  • Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern

Recent Comments

  1. Masdika.BIZ.ID on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  2. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  3. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  4. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy
  5. someone on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Archives

  • August 2025
  • July 2025
  • June 2025

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
Blog Post

Update Docker Image Tanpa Hentikan Layanan: Solusi untuk Production!

July 24, 2025 Tutorial by Masdika.BIZ.ID
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

  1. Masuk ke direktori project:
cd /home/andika/mail.masdika.biz.id
  1. Tarik image terbaru:
docker compose pull
  1. Jalankan ulang container dengan image baru:
docker compose up -d --no-deps --force-recreate
  1. Cek status container:
docker ps
  1. (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.

Share:
Tags: dockerimageslinux

Post navigation

Prev
Next
Write a comment Cancel Reply

© 2025 www.masdika.biz.id — Semua Hak Dilindungi