我已在已安装 nginx 的服务器上安装了iRedMail。 我已经在docker容器中安装了docker和gitlab。
是否可以从docker外部的nginx到gitlab到docker容器中进行负载均衡?我不知道Ip也不是端口。
我还需要将MariaDB本地容器与Gitlab docker容器一起使用。
答案 0 :(得分:2)
是否可以从docker外部的nginx到gitlab到docker容器中进行负载均衡?
您可以使用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
以使用
docker-gen -watch -only-exposed -notify "nginx -s reload" nginx.tmpl /etc/nginx/sites-enabled/gitlab.conf
我还需要将MariaDB本地容器与Gitlab docker容器一起使用。
你可以将主机ip暴露给你的docker容器的主机文件,这里有一个answer来执行此操作。