登录
首页 >  Golang >  Go问答

无法将Traefik与即时配置文件相结合

来源:stackoverflow

时间:2024-02-26 18:03:27 413浏览 收藏

从现在开始,努力学习吧!本文《无法将Traefik与即时配置文件相结合》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我正在尝试学习和使用 traefik。 这是我的 docker-compose.yaml:

version: "3"

services:

  traefik:
    image: "traefik:v2.0"
    container_name: "traefik"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - ./traefik:/etc/traefik
      - ./docker:/etc/docker

  whoami:
    image: "containous/whoami"
    container_name: "whoami"

这是我的 traefik.toml:

[entrypoints]
  [entrypoints.web]
    address = ":80"

[providers]
  [providers.file]
    filename = "/etc/docker/dynamic_conf.toml"
  [providers.docker]
    exposedbydefault = false

[api]
  insecure = true

这是我的dynamic_conf.toml:

[http]
    [http.routers]
        [http.routers.whoami]
            rule = "host(`whoami.localhost`)"
            entrypoints = "web"
            service = "whoami"

但是当我构建图像并运行它时,我收到错误:

cannot start the provider *file.provider: toml: cannot load toml value of type string into a go slice

屏幕截图:traefik 错误

找不到原因,搜了一下,改了

filename = "/etc/docker/dynamic_conf.toml"

filename = ["/etc/docker/dynamic_conf.toml"]

解决方案


entrypoints 是切片,而不是字符串。

我不确定您是否需要更改大小写,但您肯定需要将其更改为切片,如下所示:

entrypoints = ["web"]

您可以在 this page 的“优先级”>“设置优先级 - 使用文件提供程序”下找到相关示例。

此外,文件名属性是一个字符串,因此请保留它之前的样子。请参阅this link

filename = "/etc/docker/dynamic_conf.toml"

本篇关于《无法将Traefik与即时配置文件相结合》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>