単一ホスト上の複数のDockerコンテナサービスのSSL証明書

単一ホスト上の複数のDockerコンテナサービスのSSL証明書

docker-compose.yaml私はDockerに初めて触れましたが、Mosquitto、NodeRED、InfluxDB、Grafanaなどの少数のサービスで構成されたシステムを正常に設定しました。それぞれは、異なるポートにHTTPエンドポイントを公開します。これらはすべてローカルでうまく機能します。

これでクラウドのホストに移動したいのですが、SafariではすべてのHTTP接続がHTTPS / TLSである必要があるため、すべての証明書を設定する必要があります。私が知る限り、私は2つの選択肢があると思います。

  1. SSL証明書を使用するように各サービスを個別に構成します。おそらく、docker-composeのサービス間で共有されるボリューム上の同じ証明書を参照することができます。

  2. おそらくnginxをこれらのそれぞれのプロキシとして設定できますか?これは、コンテナ内のポートの接続を別のコンテナのポートに転送するdocker-composeの別のサービスになります。

これらの方法のどれが良いかわからない。 Let's Encryptなので、証明書を頻繁に更新する必要があります。

この問題を検索しましたが、直接的な解決策はほとんど見つかりませんでした。私はこれがより一般的な問題だと思いましたが、そうではないかもしれません。

ベストアンサー1

どちらの方法も異なる実装を必要としますが、私は古典的な方法を好みます。

エンジンX:

    Generate a server certificate ( Used by the 4 apps )

    You will need to create 1 Vhost for every app.

    Map the exposed ports to the Vhosts on docker-compose

    Use of certbot for auto renewal  on your docker-compose.

欠点:

  You  will have a single entry to your apps ( **Single point of failure** )

  The communication between your NGINX Reverse Proxy and your containers will not be **secured**.

利点: クイック実装

権威ある:

    Generate a server certificate ( Used by the 4 apps )

    Setup SSL differently on every app configuration file.

    Use of certbot for auto renewal on your docker-compose.

利点:遅い実装

おすすめ記事