docker - 具有路径匹配规则的 traefik 反向代理后面的 Jenkins Docker 容器

标签 docker jenkins traefik

我有一个运行 traefik reverse proxy 的 Docker 容器像这样:

docker run \
  -d \
  --name traefik-reverse-proxy \
  --network="host" \
  -p 80:80 \
  -v /dev/null:/etc/traefik/traefik.toml \
  -v /var/run/docker.sock:/var/run/docker.sock \
  traefik:1.5-alpine \
    --docker

然后我用 Jenkins 运行另一个容器,它通过标签配置转发规则,以便 traefik会将所有路径以 /jenkins 开头的请求转发给它:

docker run \
  -d \
  --name jenkins \
  --label "traefik.port=8080" \
  --label "traefik.frontend.rule=PathPrefix: /jenkins" \
  jenkins/jenkins:lts

现在,开幕http://localhost/jenkins ,请求被正确转发到 Jenkins 容器,它将我重定向到主 index.html页。但是,页面大部分是空白的,因为 JavaScript 和 CSS Assets 未正确加载。

查看浏览器控制台,我可以看到索引页面正在尝试从 http://localhost/static/4e9c623d/scripts/yui/button/button-min.js 这样的地址加载它们此设置中不存在。相反,它应该包括 /jenkins/加入 URL 并尝试从例如http://localhost/jenkins/static/4e9c623d/scripts/yui/button/button-min.js相反 - 手动点击该 URL 会在浏览器中显示 JS 文件。

我尝试使用像 --label "traefik.frontend.rule=PathPrefix: /jenkins; AddPrefix: /jenkins/" 这样的规则组合但这并没有改变任何东西。

我必须如何编写规则才能使其正常工作?

最佳答案

您需要将自定义路径添加到环境变量,例如-e JENKINS_OPTS="--prefix=/jenkins" 运行 Jenkins 容器时。

参见 https://github.com/jenkinsci/docker/blob/master/README.md#configuring-reverse-proxy

关于docker - 具有路径匹配规则的 traefik 反向代理后面的 Jenkins Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47837768/

相关文章:

kubernetes - 如何在traefik中配置上传大文件速度限制?

kubernetes - Kubernetes Traefik,保持服务不可用

python - AWS Lambda 函数返回 "errorMessage": "[Errno 30] Read-only file system: '/home/sbx_user105 1'"

linux - Docker 在构建时无法找到包 (wkhtmltopdf)

jenkins - 如何在 jenkins 管道中导入文件夹级共享库

git - Maven 发布插件 git push 不适用于 Git Deploy key

jenkins - 如何连接 Jenkins 和 Gieta

docker - Traefik 2 docker 未显示客户端真实 IP

django - 无法在 postgres docker 容器中对用户进行身份验证

python - Django和Nginx- docker -添加add worker_connections的问题。 nginx-这里不允许使用伪指令