docker-compose.yaml
私はDockerに初めて触れましたが、Mosquitto、NodeRED、InfluxDB、Grafanaなどの少数のサービスで構成されたシステムを正常に設定しました。それぞれは、異なるポートにHTTPエンドポイントを公開します。これらはすべてローカルでうまく機能します。
これでクラウドのホストに移動したいのですが、SafariではすべてのHTTP接続がHTTPS / TLSである必要があるため、すべての証明書を設定する必要があります。私が知る限り、私は2つの選択肢があると思います。
SSL証明書を使用するように各サービスを個別に構成します。おそらく、docker-composeのサービス間で共有されるボリューム上の同じ証明書を参照することができます。
おそらく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.
利点:遅い実装