10

私は Docker Compose (v2) を実行しており、ノード サービス (Web サイト) と Python ベースの API を配置し、それらの前に nginx を配置しています。

私がやりたいことの 1 つは、コンテナーを追加してサービスをスケーリングできるようにすることです。所有するコンテナーの数が事前にわかっている場合は、docker が使用可能にするコンテナーの IP への参照を使用して、nginx アップストリーム構成をハードコーディングできます。ただし、問題は、アップストリームの nginx 構成を動的にすることです。たとえば、別の Docker コンテナーを追加すると、コンテナーの場所がアップストリーム ブロックの IP のアップストリーム リストに追加されるだけです。

私の考えは、コンテナが変更されたときにenv変数を使用してアップストリームサーバーを自動的に追加するスクリプトを作成することでしたが、どこから始めればよいかわからず、良い例が見つかりません.

4

1 に答える 1

13

これを実現するには、いくつかの方法があります。あなたが言及しているものは、通常、サービス検出と呼ばれ、さまざまな形で提供されます。私が以前に使用したもののうちの2つを説明します。

最初の最も単純なもの (単一サーバーで正常に機能するか、1 つのサーバーでローカルにコンテナーを検出する場合のみ) は、Docker ソケットまたは API を利用するローカル プロキシです。https://github.com/jwilder/nginx-proxyは人気のあるものの 1 つであり、Compose でスケーラブルなサービスのプロトタイピングにうまく機能するはずです。

もう 1 つの方法 (よりマルチホストに適していますが、より複雑です) は、レジストリ (etcd や Consul など) にサービスを登録してから、構成を動的に書き出すことです。これを行うには、登録システム ( https://github.com/gliderlabs/registratorなど) を使用してコンテナーとそのポートを登録します。その後、プロキシまたはアプリケーションは、 https://github.com/kelseyhightower/confdなどのテンプレート システムを使用して書き出された構成ファイルを使用できます。

于 2016-04-17T17:10:16.993 に答える