Bagaimana cara mengotomatisasi stop/start container?

Saya menggunakan Portainer untuk mengelola kontainer Docker, dan saya telah menerapkan sebuah stack bernama XYZ (terdiri dari 4 kontainer). Saya perlu membuat cadangan seluruh stack, dan seluruh stack harus dihentikan saat proses backup berlangsung. Bagaimana cara mengotomatisasi proses stop dan start seluruh stack?

Terima kasih :slight_smile:

Karena saya menggunakan Portainer Community Edition untuk mengelola container saya, saya tidak menemukan fitur yang berguna. Jadi, saya harus menghapus Immich dari Portainer dan menerapkannya kembali di Qnap Container Station. Proses selebihnya dilakukan menggunakan shell script dan snapshot penyimpanan Qnap. Script-script tersebut dijadwalkan berjalan melalui crontab. Berikut adalah script dan langkah-langkah yang terlibat:

1. Buat script untuk menghentikan stack Immich:

#!/bin/bash
#
# Menghentikan container untuk mengambil snapshot QNAP
#

# Set PATH agar binary docker QNAP ditemukan
export PATH=/share/ZFS530_DATA/.qpkg/container-station/bin:$PATH
export HOME=/root

# Opsional: gunakan path penuh untuk memastikan 100%
DOCKER_BIN=/share/ZFS530_DATA/.qpkg/container-station/bin/docker

# Hentikan semua container Immich
$DOCKER_BIN stop $($DOCKER_BIN ps -q --filter "name=Immich")

2. Buat script untuk memulai stack Immich:

#!/bin/bash
#
# Menghentikan container untuk mengambil snapshot QNAP
#

# Set PATH agar binary docker QNAP ditemukan
export PATH=/share/ZFS530_DATA/.qpkg/container-station/bin:$PATH
export HOME=/root

# Opsional: gunakan path penuh untuk memastikan 100%
DOCKER_BIN=/share/ZFS530_DATA/.qpkg/container-station/bin/docker

# Mulai semua container Immich
$DOCKER_BIN start $($DOCKER_BIN ps -a -q --filter "name=Immich")

Jika Anda perlu menambahkan bridge network ke container Immich-Server, agar dapat diakses melalui Cloudflare, tambahkan berikut ini di bagian bawah script start:

# Tunggu 30 detik
sleep 30

# Tambahkan bridge network ke container Immich-Server
$DOCKER_BIN network connect bridge Immich-Server

3. Buat entri crontab untuk script stop dan start:

0 1 * * * /bin/sh /share/Scripts/Qnap/stop_containers.sh >> /share/Scripts/Logs/crontab_stop_container.log 2>&1
5 1 * * * /bin/sh /share/Scripts/Qnap/start_containers.sh >> /share/Scripts/Logs/crontab_start_container.log 2>&1

4. Buat snapshot terjadwal yang waktunya sesuai dengan script start/stop di crontab

Opsional: Replikasi snapshot Anda ke NAS lain.

Semoga ini bermanfaat untuk seseorang. :slight_smile:

Saya juga menemukan artikel ini tentang memulai container secara otomatis.