没有dockerized nginx负载平衡到gitlab dockerized

时间:2015-07-13 08:05:26

标签: nginx docker mariadb

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

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

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

1 个答案:

答案 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以使用

自动生成目标nginx配置文件

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

  

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

你可以将主机ip暴露给你的docker容器的主机文件,这里有一个answer来执行此操作。