Nginx(https)コンテナをdocker composeで作る
-
Author: uncho
dockerでWebサービスを構築するに当たり、リバースプロキシとしてNginxをDocker Composeで立ち上げます。昨今はhttps化が推奨される流れですのでLet’s EncryptでTLS/SSLを使用できるようにします。
一からDocker Imageを作らなくてもDocker HubにはNginxのリバースプロキシとしてnginx-proxyが、またこのnginx-proxyと合わせて使用することでhttps化できサーバ証明書の更新も自動化してくれるletsencrypt-nginx-proxy-companionがありますのでこれを使います。
またDockerコンテナのビルド&起動にはDocker Composeを使用しますのでdocker-compose.yml
ファイルを作成してdocker-compose up -d
コマンドを実行するだけでリバースプロキシが可動します。便利な世の中です。
Docker Composeファイルの作成
まずはdocker-compose.yml
ファイルを適当なディレクトリに作成します。ここでは/var/docker/proxy
に作成します。
次にdocker-compose.yml
ファイルを作成。
Docker の起動
ファイルを作成したらdocker-composeコマンドを実行します。
これでリバースプロキシの準備&起動が完了です。とても簡単。 あとはWEBサービスをdockerで起動する際に下記の環境変数を設定すればリバースプロキシがリクエストをWEBサービスにフォワードしてくれます。またLet’s Encryptでサーバ証明書を自動的に取得されるのでhttpsでのリクエストももちろん可能。
なお環境変数VIRTUAL_HOST
, LETSENCRYPT_HOST
のFQDNは事前にDNSに登録している必要があります。
ひとつ注意点。WEBサービスのdocker起動の際はnginx-proxyと同じネットワークに接続されている必要があるのでnetwork_mode
は下記設定が必要。