コンテナの停止と起動を自動化する方法

私はPortainerを使ってDockerコンテナを管理しており、XYZという名前のスタック(4つのコンテナで構成)をデプロイしています。スタック全体のバックアップを取りたいのですが、バックアップ中はスタック全体を停止する必要があります。スタック全体の停止と起動を自動化するにはどうすればよいでしょうか?

よろしくお願いします :slight_smile:

私はPortainer Community Editionを使ってコンテナを管理していましたが、役立つ機能が見つかりませんでした。そのため、PortainerからImmichを削除し、Qnap Container Stationで再デプロイしました。残りのプロセスはシェルスクリプトとQnapストレージのスナップショットを使って行います。スクリプトはcrontabでスケジュール実行されます。以下にスクリプトと手順を示します。

1. Immichスタックを停止するスクリプトを作成する:

#!/bin/bash
#
# QNAPスナップショットを取得するためにコンテナを停止
#

# QNAP dockerバイナリが見つかるようにPATHを設定
export PATH=/share/ZFS530_DATA/.qpkg/container-station/bin:$PATH
export HOME=/root

# オプション:フルパスを使用して確実に
DOCKER_BIN=/share/ZFS530_DATA/.qpkg/container-station/bin/docker

# すべてのImmichコンテナを停止
$DOCKER_BIN stop $($DOCKER_BIN ps -q --filter "name=Immich")

2. Immichスタックを起動するスクリプトを作成する:

#!/bin/bash
#
# QNAPスナップショットを取得するためにコンテナを停止
#

# QNAP dockerバイナリが見つかるようにPATHを設定
export PATH=/share/ZFS530_DATA/.qpkg/container-station/bin:$PATH
export HOME=/root

# オプション:フルパスを使用して確実に
DOCKER_BIN=/share/ZFS530_DATA/.qpkg/container-station/bin/docker

# すべてのImmichコンテナを起動
$DOCKER_BIN start $($DOCKER_BIN ps -a -q --filter "name=Immich")

Cloudflare経由でアクセスできるようにImmich-Serverコンテナにbridgeネットワークを追加する必要がある場合は、以下をstartスクリプトの末尾に追加してください:

# 30秒待機
sleep 30

# Immich-Serverコンテナにbridgeネットワークを追加
$DOCKER_BIN network connect bridge Immich-Server

3. stop/startスクリプトのためのcrontabエントリを作成する:

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. crontabのstart/stopスクリプトの時間に合わせてスケジュールされたスナップショットを作成する

オプション: スナップショットを別のNASにレプリケートする。

どなたかの参考になれば幸いです。 :slight_smile:

「いいね!」 1

コンテナを自動的に起動する方法について書かれたこの記事も見つけました。

「いいね!」 1