考え方は単純です。コンテナから別のコンテナへ信号を送信して、nginx
を再起動する必要があります。同じホスト上の2つのコンテナ間の通信
コンテナに最初のコンテナを接続します。ssh
は良い解決策ですか?
他にもおすすめの方法がありますか?
考え方は単純です。コンテナから別のコンテナへ信号を送信して、nginx
を再起動する必要があります。同じホスト上の2つのコンテナ間の通信
コンテナに最初のコンテナを接続します。ssh
は良い解決策ですか?
他にもおすすめの方法がありますか?
ssh
、Docker
コンテナは仮想マシンではありません。また、マイクロサービスアーキテクチャを尊重して、それが提供する多くの利点の恩恵を受ける必要があります。
1つのコンテナから別のコンテナに信号を送信するために、ドッカーAPIを使用できます。
最初に、必要なコンテナ間で/var/run/docker.sock
を共有する必要があります。あなたは次の操作を行うことができますnginxの名前のコンテナに信号を送信するために
docker run -d --name control -v /var/run/docker.sock:/var/run/docker.sock <Control Container>
:
echo -e "POST /containers/nginx/kill?signal=HUP HTTP/1.0\r\n" | \
nc -U /var/run/docker.sock
別のオプションは、nginxの設定ファイルをチェックするカスタムスクリプト、としている場合、カスタムイメージを使用していますハッシュが変更され、リロード信号が送信されます。こうすることで、設定を変更するたびにnginxが自動的にリロードされるか、コメントを使用して手動でリロードすることができます。これらの種類のスクリプトはkubernetes
ユーザーの間で共通しています。以下は例です:
nginx "[email protected]"
oldcksum=`cksum /etc/nginx/conf.d/default.conf`
inotifywait -e modify,move,create,delete -mr --timefmt '%d/%m/%y %H:%M' --format '%T' \
/etc/nginx/conf.d/ | while read date time; do
newcksum=`cksum /etc/nginx/conf.d/default.conf`
if [ "$newcksum" != "$oldcksum" ]; then
echo "At ${time} on ${date}, config file update detected."
oldcksum=$newcksum
nginx -s reload
fi
done
inotifywait
パッケージをインストールするのを忘れないでください。
nginxを再起動するために外部エントリポイントを持つことは危険ですか? – Tali
あなたの環境にもよりますが、多くのオプションがあります。設定データを共有することができます。その他のオプションがたくさんあります。 –
nginxを再起動するにはrootユーザーでなければなりません。 – Tali