Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Panduan Lengkap Install K3s di Ubuntu dan Konfigurasi Remote Kubectl dari Windows PC/Laptop
  • Deploy Next.js di Kubernetes dengan Ingress + SSL Let’s Encrypt
  • Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  • Panduan Lengkap Deploy WordPress + Redis + MySQL di Kubernetes dengan SSL Cloudflare
  • Panduan Lengkap Install & Konfigurasi Ceph 3 Node dengan RGW (S3 Compatible)

Recent Comments

  1. Rudy on Panduan Lengkap Install K3s di Ubuntu dan Konfigurasi Remote Kubectl dari Windows PC/Laptop
  2. Masdika.ID on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  3. Sahrull on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  4. Masdika.ID on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  5. Sahrull on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager

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.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
Related Posts
Deploy Next.js di Kubernetes dengan Ingress + SSL Let’s Encrypt

Buat kamu yang lagi Deploy aplikasi dengan Next.js dan pengen jalan di Kubernetes dengan domain custom + SSL otomatis, artikel…

Deploy Next.js di Docker (Frontend Only) dengan pnpm

🌟 Apa itu Next.js ? Next.js adalah framework React yang populer untuk membangun aplikasi web modern. Dengan fitur SSR (Server…

Post navigation

Prev
Next
Write a comment Cancel Reply


© 2025 www.masdika.id — Semua hak cipta dilindungi