1. HOME
  2. 開発・ブログ運営
  3. Docker
  4. Docker 公式イメージで立ち上げた Nginx コンテナをゼロダウンタイムで設定変更を反映させる方法
2016年05月26日
エックスサーバーから さくらVPS + Docker に引っ越 ...
2016年07月06日
Jenkins コンテナの初期設定を自動化してみる
2016年07月12日
Let’s Encrypt で HTTPS(SSL ...
2016年07月27日
Docker コンテナが消費しているリソース(CPU とか メ ...
2016年08月01日
Docker for Mac を使って WordPress の ...
2016年07月22日
WordPress が稼働する Apache2 コンテナと N ...

Docker 公式イメージで立ち上げた Nginx コンテナをゼロダウンタイムで設定変更を反映させる方法

Nginx コンテナをサービスを止めずに(ゼロダウンタイムで)設定を反映させる方法です。

このブログでは WEB サーバーを Apache 2 から Nginx + PHP-FPM に変更しましたが、個人のお気軽ブログということもあり、とりあえず Nginx も PHP-FPM も(ほぼ)デフォルト設定でコンテナを立ち上げて、運用しながら設定をちょいちょい変更しています。

立ち上げた当初は、コンテナの初期化スクリプトを修正してから、稼働中のコンテナを破棄して、新たにコンテナを立ち上げていましたが、ここ数日はポケモン GO 需要で 24 時間アクセスも途切れません。

なので、最近は、直接コンテナ内の設定を変更して、コンテナを稼働させたまま Nginx の設定を反映させてます。

PHP-FPM コンテナについては「Docker 公式イメージで立ち上げた PHP-FPM コンテナをゼロダウンタイムで設定を反映させる方法」をご覧ください。


Nginx の設定を反映させる

Nginx の設定ファイル(/etc/nginx/conf.d/*.conf など)を変更したら、

$ docker ps

で、Nginx コンテナのコンテナ ID を確認して、

$ docker exec -it [コンテナ ID] /bin/bash

で、Nginx コンテナの中に入ったら、

$ /etc/init.d/nginx reload

で、設定を反映させられます。間違って、/etc/init.d/nginx restart するとコンテナが終了してしまうので注意してください。


まとめ

もっとも、Immutable Infrastructure の観点から言えば、実運用中のコンテナの設定ファイルを変更することはけしからん!、という話ではありますが、コンテナの再起動を伴うと、どうしても(数秒だとしても)サービスが停止してしまうし、どうしても、という場合もあると思うので。。。

直接コンテナの設定変更した場合は、忘れずに Dockerfile なりコンテナの初期化スクリプトも修正しておかないと、再度コンテナを立ち上げた時に時に設定が元に戻ってしまうのでご注意を。

でわでわ。








この記事にコメントする





Copyright © 2012 - 2014 MacBook Air とWordPressでこうなった All rights reserved
Powered by WordPress.