Jenkins Docker容器,后面跟着path匹配规则的traefik反向代理

我有一个Docker容器运行一个traefik反向代理就像这样:

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运行另一个容器,它通过标签configuration转发规则,以便traefik将所有请求转发traefik /jenkins开头的path:

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

现在,打开http://localhost/jenkins ,请求被正确转发到Jenkins容器,该容器将我redirect到主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/"的规则组合,但是这并没有改变任何东西。

我该如何编写规则才能正常工作?

在运行Jenkins容器时,您需要将自定义path添加到环境variables,例如-e JENKINS_OPTS="--prefix=/jenkins"

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