nginx-proxy は、nginx と docker-gen を実行するコンテナをセットアップします。 docker-gen は、nginx のリバース プロキシ構成を生成し、コンテナーの起動時と停止時に nginx をリロードします。
これを使用する理由については、「Docker 用の自動 Nginx リバース プロキシ」を参照してください。
実行するには:
docker run --detach
--name nginx-proxy
--publish 80:80
--volume /var/run/docker.sock:/tmp/docker.sock:ro
nginxproxy/nginx-proxy:1.6
次に、環境変数VIRTUAL_HOST=subdomain.yourdomain.com
でプロキシするコンテナ (ここでは nginx コンテナ) を起動します。
docker run --detach
--name your-proxied-app
--env VIRTUAL_HOST=foo.bar.com
nginx
DNS がfoo.bar.com
nginx-proxy を実行しているホストに解決するように設定されている場合、http: http://foo.bar.com
へのリクエストは、 VIRTUAL_HOST
環境変数がfoo.bar.com
(この場合、プロキシされたアプリのコンテナー)。
プロキシされるコンテナは次のことを行う必要があります。
Dockerfile
でEXPOSE
ディレクティブを使用するか、 docker run
またはdocker create
に--expose
フラグを使用して、プロキシされるポートを公開します。--net
フラグを渡さない場合、コンテナはデフォルトのブリッジ ネットワークにのみ接続されます。これは、ブリッジ以外のネットワーク上のコンテナに接続できないことを意味します。注: VIRTUAL_HOST
でのポート番号の指定はサポートされていません。実現したい内容に応じて、仮想ポートまたはカスタム外部 HTTP/HTTPS ポートを参照してください。
nginx-proxy イメージは 2 つの種類で利用できます。
このイメージは nginx:mainline イメージに基づいており、それ自体は debian スリム イメージに基づいています。
docker pull nginxproxy/nginx-proxy:1.6
-alpine
接尾辞)このイメージは、nginx:alpine イメージに基づいています。
docker pull nginxproxy/nginx-proxy:1.6-alpine
latest
とalpine
についてのメモ:運用環境のセットアップでは、 latest
( nginxproxy/nginx-proxy
、 nginxproxy/nginx-proxy:latest
) タグまたはalpine
( nginxproxy/nginx-proxy:alpine
) タグを使用することはお勧めできません。
これらのタグは、 main
ブランチ内の最新のコミットを指します。これらには安定性が約束されておらず、これらを使用すると、おそらく nginx-proxy セットアップが下位互換性のないバージョン (または互換性を破るバージョン) への制御されない更新に遭遇する危険にさらされることになります。イメージが更新されたときにセットアップが中断されないように、使用するバージョンを常に明示的に指定する必要があります。
ドキュメントセクションを確認してください。