我希望能够使用docker容器热重载前端规则。
我可以获取在文件中定义的traefik前端规则 ,并以docker容器名称作为后端吗?
当前docker配置:它可以工作,但已进行硬编码/无法热加载
docker run -d -p 8080:8080 -p 80:80 -v $PWD:/etc/traefik -v /var/run/docker.sock:/var/run/docker.sock traefik
docker run -d --name v1 -l "traefik.frontend.rule=PathPrefix:/,/foo" emilevauge/whoami
docker run -d --name v2 -l "traefik.frontend.rule=PathPrefix: /bar" emilevauge/whoami
/
和/foo
转到容器v1; /bar
转到v2。很好。
面临的挑战是热重新加载前端规则。示例:我希望“ bar”现在在v1上。
我的想法是切换到“文件”配置(因为可以观察到文件更改,因此可以热重载)
但是我被困在配置后端。我可以在其中使用容器名称吗?
这是我尝试过的:
docker run -d --name v1 -l "traefik.backend=v1" emilevauge/whoami
rules.toml
文件(热重载该文件!)[frontends]
[frontends.v1]
backend = "backend-v1"
[frontends.v1.routes.test]
rule = "PathPrefix: /,/foo"
[frontends.v2]
backend = "backend-v2"
[frontends.v2.routes.test]
rule = "PathPrefix: /bar"
不幸的是,这不起作用。看来我也需要在文件中声明后端。
如何将我的后端声明为现有容器?
[backends]
[backends.v1]
--> here something to reference container v1
[backends.v2]
--> here something to reference container v2
那有可能吗?还是我在这里做一些根本错误的事情?