使用Docker容器时在文件中热重载traefik前端规则

时间:2019-01-18 15:45:52

标签: docker traefik

我希望能够使用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  

那有可能吗?还是我在这里做一些根本错误的事情?

0 个答案:

没有答案