traefik代理背后的Gitlab“网关超时”
Posted
技术标签:
【中文标题】traefik代理背后的Gitlab“网关超时”【英文标题】:Gitlab 'Gateway Timeout' behind traefik proxy 【发布时间】:2018-03-23 17:32:55 【问题描述】:所以我正在尝试使用 traefik 作为反向代理在 docker swarm 上设置一个 gitlab-ce 实例。
这是我的代理堆栈;
version: '3'
services:
traefik:
image: traefik:alpine
command: --entryPoints="Name:http Address::80 Redirect.EntryPoint:https" --entryPoints="Name:https Address::443 TLS" --defaultentrypoints="http,https" --acme --acme.acmelogging="true" --acme.email="freelyformd@gmail.com" --acme.entrypoint="https" --acme.storage="acme.json" --acme.onhostrule="true" --docker --docker.swarmmode --docker.domain="mydomain.com" --docker.watch --web
ports:
- 80:80
- 443:443
- 8080:8080
networks:
- traefik-net
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
placement:
constraints:
- node.role == manager
networks:
traefik-net:
external: true
还有我的 gitlab 堆栈
version: '3'
services:
omnibus:
image: 'gitlab/gitlab-ce:latest'
hostname: 'lab.mydomain.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://lab.mydomain.com'
nginx['listen_port'] = 80
nginx['listen_https'] = false
registry_external_url 'https://registry.mydomain.com'
registry_nginx['listen_port'] = 80
registry_nginx['listen_https'] = false
gitlab_rails['gitlab_shell_ssh_port'] = 2222
gitlab_rails['gitlab_email_from'] = 'lab@mydomain.com'
gitlab_rails['gitlab_email_reply_to'] = 'lab@mydomain.com'
ports:
- 2222:22
volumes:
- gitlab_config:/etc/gitlab
- gitlab_logs:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
networks:
- traefik-net
deploy:
labels:
traefik.enable: "port"
traefik.frontend.rule: 'Host: lab.mydomain.com, Host: registry.mydomain.com'
traefik.port: 80
placement:
constraints:
- node.role == manager
runner:
image: 'gitlab/gitlab-runner:v1.11.4'
volumes:
- gitlab_runner_config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
volumes:
gitlab_config:
gitlab_logs:
gitlab_data:
gitlab_runner_config:
networks:
traefik-net:
external: true
traefik-net
是一个覆盖网络
所以当我使用docker stack deploy
进行部署并访问lab.mydomain.com 时,我收到Gateway Timeout
错误。当我在 gitlab 容器中执行 curl localhost
时,它似乎工作正常。不知道是什么问题,欢迎指点
【问题讨论】:
【参考方案1】:原来我所要做的就是将 traefik 标签,traefik.docker.network
设置为 traefik-net
,参见 https://github.com/containous/traefik/issues/1254
【讨论】:
你最终的 docker-compose.yml 到底是什么? 有点旧但在这里查看github.com/freelyformd/swarm-boilerplate/blob/master/gitlab/…以上是关于traefik代理背后的Gitlab“网关超时”的主要内容,如果未能解决你的问题,请参考以下文章
traefik 代理后面的 docker 中的 gitlab 失败(通常)
解析 HTTP 404 响应正文的反向代理错误背后的 Gitlab 注册表:JSON 输入的意外结束:“”