traefik之docker-compose.yml
traefik 一般需要一个配置文件来管理路由,服务,证书等。我们可以通过 docker 启动 traefik 时来挂载配置文件,docker-compose.yaml 文件如下
traefik 默认有一个 dashboard,通过 :8080 端口暴露出去。我们可以在浏览器中直接通过 :8080 访问,但是
使用 IP 地址肯定不是特别方便,此时我们可以配置 Host
在公网环境下访问有安全性问题,此时可以配置 basicAuth,digestAuth,IpWhiteList 或者 openVPN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| version: '3'
services: reverse-proxy: image: traefik ports: - "52080:80" - "52081:8080" volumes: - ./traefik.toml:/etc/traefik/traefik.toml - /var/run/docker.sock:/var/run/docker.sock container_name: traefik labels: - "traefik.http.routers.api.rule=Host(`www.hong.local`)" - "traefik.http.routers.api.service=api@internal"
|
traefik.toml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| ## Static configuration [global] checkNewVersion = true sendAnonymousUsage = false
[entryPoints] [entryPoints.http] address = ":80" [entryPoints.traefik] address = ":8080"
[api] insecure = true dashboard = true #debug = true
[providers] [providers.docker] endpoint = "unix:///var/run/docker.sock" defaultRule = "Host(`{{ normalize .Name }}.docker.localhost`)" # 限制服务发现范围 # 如果设置为 false, 则没有 traefik.enable=true 标签的容器将从生成的路由配置中忽略 exposedByDefault = false #[providers.file] # filename = "dynamic_conf.toml" # watch = true [metrics] [metrics.prometheus]
|
whoami之docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| version: '3'
services: whoami: image: containous/whoami labels: # 声明公开此容器访问 - traefik.enable=true # 服务将响应的域 - traefik.http.routers.whoami.rule=Host(`www.jun.local`) networks: default: external: name: traefik_default
|
那 whoami 这个 http 服务做了什么事情呢
暴露了一个 http 服务,主要提供一些 header 以及 ip 信息
配置了容器的 labels,设置该服务的 Host 为 whoami.docker.localhost,给 traefik 提供标记