gpt4 book ai didi

docker - traefik 代理后面的 docker 中的 gitlab 失败(通常)

转载 作者:IT老高 更新时间:2023-10-28 21:34:49 33 4
gpt4 key购买 nike

我有几个使用 LetsEncrypt 凭据在 docker 中运行并通过 traefik 路由的网站。我想使用 LetsEncrypt 和 traefik 在 docker 中运行本地 gitlab-ce。

所以我将它添加到我的 traefik.toml 文件中:

[[acme.domains]]
main = "gitlab.mydomain.com"

这个到 config/gitlab.rb:

external_url "http://gitlab.mydomain.com"

我开始 gitlab:

docker run -d --restart=always \
--hostname gitlab.mydomain.com \
--expose 80 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--volume /var/log/gitlab:/var/log/gitlab \
--label traefik.frontend.rule=Host:gitlab.mydomain.com \
--name gitlab gitlab/gitlab-ce:latest

转到 https://gitlab.mydomain.com/我获得了一个带有 LetsEncrypt 生成证书的安全站点,但该站点无法加载:

Internal Server Error

当我重新加载页面时,我在 docker logs gitlab -f 中看到了这个:

==> /var/log/gitlab/sshd/current <==
2017-02-12_16:51:31.00446 Bad protocol version identification 'GET / HTTP/1.1' from 172.17.0.8 port 41138
2017-02-12_16:51:31.26238 Bad protocol version identification 'GET /favicon.ico HTTP/1.1' from 172.17.0.8 port 41140

在日志中搜索 /error/i 我看到一些可能是问题的东西(zruby/gems/2.3.0/gems/redis-3.2.2z 中报告了很多错误)但是没有“确凿证据”AFAICT。

最疯狂的是,大约每十次左右(随机)运行一次 docker restart gitlab 网站就会完美地出现。我一直很想把它搁置一旁,但其中隐藏着疯狂......

我怎样才能让它可靠地出现?或者我怎样才能更完整地调试它?

最佳答案

这个答案对你来说可能来得太晚了,但我遇到了同样的问题并且能够解决它。

重要的线索是日志错误是由 sshd 守护进程引起的!

Traefik 默认会选择容器公开的第一个端口(通过 Dockerfile,而不是您手动公开的端口!)。对于 Gitlab 容器,这是 ssh 端口 22。

所以 Traefik 会将 Web 请求定向到 Gitlab 的 SSH 守护进程。

要解决此问题,您需要为 Traefik 明确设置端口,并带有标签:

Traefik 1.x:

labels:
...
- traefik.port=80

Traefik 2.x:

labels:
- traefik.http.services.<your-service-name>.loadbalancer.server.port=80

关于docker - traefik 代理后面的 docker 中的 gitlab 失败(通常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192934/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com