我在同一台主机上运行了Nginx-proxy(Jwilder,默认配置)和Gitlab-Instance。
git.myhost.com
指向主机IP。
当使用下面的docker-compose.yml
启动Gitlab时,我会在访问http://git.myhost.com时获得502 Bad Gateway
。
nginx-proxy容器中生成的/etc/nginx/conf.d/default.conf
看起来也很好:
upstream git.myhost.com {
# 2ab9168d-c69e-4725-8c20-31a194ad8d07
server 172.17.0.13 vhost;
}
server {
server_name git.myhost.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://git.myhost.com;
}
}
我做错了什么?
这是Gitlab的docker-compose.yml
:
gitlab-server:
hostname: git.myhost.com
expose:
- "8100"
ports:
- 8101:22/tcp
# - 8100:8100/tcp
labels:
io.rancher.sidekicks: gitlab-data
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://git.myhost.com'
gitlab_rails['gitlab_shell_ssh_port'] = 8101
VIRTUAL_HOST: git.myhost.com
VIRTUAL_PORT: 8100
image: gitlab/gitlab-ce:latest
volumes_from:
- gitlab-data
gitlab-data:
labels:
io.rancher.container.start_once: 'true'
entrypoint:
- /bin/true
hostname: gitdata
image: gitlab/gitlab-ce:latest
volumes:
- /etc/gitlab:/etc/gitlab
- /var/log/gitlab:/var/log/gitlab
- /var/opt/gitlab:/var/opt/gitlab
答案 0 :(得分:1)
你应该改变nginx如下:
upstream gitlab {
# 2ab9168d-c69e-4725-8c20-31a194ad8d07
server 172.17.0.13:8100;
}
server {
server_name git.myhost.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://gitlab;
}
}
172.17.0.13是gitlab docker container的ip地址。
答案 1 :(得分:0)
可能导致此问题的常见问题之一是在nginx-proxy
网络外部运行容器,而nginx-proxy
最终无法访问该容器。
要在nginx-proxy
所在的同一网络中运行它,首先,您需要找出nginx-proxy
在哪个网络中运行。只需运行以下命令即可找出答案:
docker network ls -f driver=bridge --format "{{.ID}}" | xargs docker network inspect | grep Name
它应该给你这样的东西:
"Name": "bridge",
"Name": "influxdb",
"Name": "mariadb",
"Name": "http_proxy",
"Name": "web-app",
"Name": "proxy",
"Name": "grafana",
现在,我可以看到名称为proxy
的容器在名为http_proxy
的网络下。
我要做的就是在网络中运行新容器,方法是添加标志--network http_proxy
(用您的网络名称替换http_proxy
)
docker run -d --name test --network http_proxy -h test.local -e VIRTUAL_HOST=test.local -v "$PWD":/usr/share/nginx/html nginx
希望这会有所帮助。 祝你好运!