inhumantsar.dockerautoproxy
dockerautoproxy
何ですか?
jwilder/nginx-proxy Dockerイメージを使用して、Docker Swarm内のリバースプロキシ設定を自動化します。
使い方は?
役割の使用
このイメージは動的に設定されるように設計されているため、事前にすることはあまりありません。詳細はdefaults/main.ymlを参照してください。
デフォルトではalpineイメージが使用されますが、nginx_versionをlatestに変更すると、debian:jesseベースのイメージを使用できます。
nginx_proxy_netというネットワークが作成され、プロキシされたコンテナはこれに参加する必要があります。
Nginxのプロキシ使用法
プロキシが必要なコンテナは、2つのことをする必要があります:プロキシされるポートを公開することと、仮想ホストを指定することです。
ポートはDockerfileでEXPOSEを使用して指定するか、コマンドラインで--exposeを使用するか、Docker Composeファイルでexposeを使用して指定できます。
仮想ホストは、VIRTUAL_HOSTという環境変数で指定する必要があります。
高度な使用法
カスタムnginx設定
ホストパスをマウントしてnginx設定ファイルを読み込むことができます。これはdockerautoproxy_config_path変数を使用して指定します。指定したパスがホスト上に存在しない場合は作成されます。
SSL証明書
SSL証明書は自動生成または手動指定が可能です。デフォルトでは、コンテナ間で共有されるデータボリュームに保存されます。dockerautoproxy_certs_pathを使用して、ホスト上のパスをマウントして保存することができます。
証明書を自動生成するには、Ansibleの変数dockerautoproxy_ssl_companionをtrueに設定してください。これにより、Let's EncryptでSSL証明書生成を処理する2つ目のコンテナが起動します。このためにサービスを有効にするには、コンテナの環境変数LETSENCRYPT_HOSTとLETSENCRYPT_EMAILを設定します。例えば:
$ docker run -d \
--name example-app \
-e "VIRTUAL_HOST=example.com,www.example.com,mail.example.com" \
-e "LETSENCRYPT_HOST=example.com,www.example.com,mail.example.com" \
-e "[email protected]" \
tutum/apache-php
