【问题标题】:Jenkins Docker container behind traefik reverse proxy with path-matching rule具有路径匹配规则的 traefik 反向代理背后的 Jenkins Docker 容器
【发布时间】:2017-12-15 18:14:20
【问题描述】:

我有一个运行 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 资源,该页面大部分为空白。

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

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

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

【问题讨论】:

    标签: docker jenkins traefik


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 2020-11-11
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2022-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多