未 dockerized nginx 负载均衡到 gitlab dockerized

Not dockerized nginx load balancing to gitlab dockerized

我在安装了 nginx 的服务器上安装了 iRedMail。 我已经在 docker 容器中安装了 docker 然后是 gitlab。

是否可以从 docker 外部的 nginx 负载均衡到 docker 容器中的 gitlab?我不知道 Ip 和端口。

我还需要将 MariaDB 本地容器与 Gitlab docker 容器一起使用。

Is it possible to load balance from the nginx outside docker to the gitlab into the docker container ?

您可以使用 docker-gen

进行自动更新 nginx.conf

首先,按照doc

在您的主机上安装docker-gen

然后,您应该制作一个 docker-gen 模板来生成您的 nginx 配置文件。

假设你的 gitlab 容器名为 gitlab,我们将它绑定到域 gitlab.domain.com,那么我们有这个模板

{{ range $name, $containers := groupBy $ "Name" }}
{{ $target_name := "gitlab"}}
{{ if $name==$target_name}}
upstream {{ $name }} {

{{ range $index, $value := $containers }}
    {{ with $address := index $value.Addresses 0 }}
    server {{ $address.IP }}:{{ $address.Port }};
    {{ end }}
{{ end }}

}
{{ end }}

server {
    listen 80;
    server_name gitlab.domain.com;

    location / {
        proxy_pass http://{{ $name }};
        include /etc/nginx/proxy_params;
    }
}
{{ end }}

最后,我们运行docker-gen使用

自动生成目标nginx配置文件

docker-gen -watch -only-exposed -notify "nginx -s reload" nginx.tmpl /etc/nginx/sites-enabled/gitlab.conf


I also need to use the MariaDB local container with the Gitlab docker container.

您可以将主机 IP 暴露给您的 docker 容器的主机文件,这里有一个 answer 可以做到这一点。