Docker 上的多个 Redmine 实例

Multiple instances of Redmine on Docker

我一直在尝试在两个单独的子域上托管多个 Redmine 实例,例如 redmine.domain-a.comredmine.domain-b.com。我需要他们都拥有 SSL 证书,我通常为此使用 Let's Encrypt,我发现了这个。

https://github.com/glego/redmine-nginx-letsencrypt

我设法设置了一个 Redmine,但我想不出设置第二个的方法。要么我 运行 进入 nginx 的端口冲突,要么我只添加具有不同虚拟域和端口的 redmine 容器并且它启动正常,但它仍然无法在子域上访问。这是我第一次使用 Docker,也许值得一提的是我的 VPS 是 运行ning Debian 8.

如果你想 运行 2 网络服务器(docker 容器)在同一台机器上使用相同的 ip 地址和端口,你必须添加一个反向代理,如 HAProxy 到您的配置。这是因为网络连接将始终基于您的服务器 IP 和端口(80、443 用于 Web)。但是 HTTP(s) 请求将包含主机名。像 HAProxy 这样的反向代理接受 HTTP 请求,查看主机名并将请求转发到可能具有不同端口甚至不同 IP 地址的容器(您可以将请求转发到容器内部 IP,这样就没有端口映射将是必需的)。

您的证书也将由负载平衡器提供服务,这样可以起到 HTTPS termiation proxy.

的作用

请求流程如下:

                         ┌-> Container 1
Client --> ReverseProxy -|
                         └-> Container 2
  • 您的 ReverseProxy(例如 HaProxy)侦听您的 public IP 和端口 80/443。
  • 这两个容器只能在您的主机上访问,并且可以通过它们的内部 docker ip 或 prot 映射进行访问。