单个主机上多个 docker 容器服务的 SSL 证书

单个主机上多个 docker 容器服务的 SSL 证书

我对 Docker 还很陌生,但我已经成功建立了一个docker-compose.yaml由 Mosquitto、NodeRED、InfluxDB 和 Grafana 等少数服务组成的系统。每个都在不同的端口上发布一个 HTTP 端点。这些在本地都运行良好。

现在我想将它们移至云中的主机,但 Safari 要求所有 HTTP 连接均为 HTTPS/TLS,因此我需要为所有内容设置证书。据我所知,我认为我有两个选择:

  1. 单独配置每个服务以使用 SSL 证书。我可能可以让它们全部引用放置在 docker-compose 中的服务之间共享的卷上的相同证书。

  2. 也许将 nginx 设置为其中每个的代理?这将是 docker-compose 中的另一个服务,将其容器上的端口上的连接转发到其他容器上的端口。

我不确定这些方法中哪一种更好。因为它是 Let's Encrypt,所以证书需要经常更新。

我在谷歌上搜索了这个问题,但几乎没有找到直接的解决方案。我本以为这是一个更常见的问题,但也许不是。

答案1

对于这两种方法,您都需要不同的实现;但我更喜欢经典的:

NGINX:

    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.

优点:实施缓慢

相关内容