traefik之docker-compose.yml
traefik 一般需要一个配置文件来管理路由,服务,证书等。我们可以通过 docker 启动 traefik 时来挂载配置文件,docker-compose.yaml 文件如下
traefik 默认有一个 dashboard,通过 :8080 端口暴露出去。我们可以在浏览器中直接通过 :8080 访问,但是
使用 IP 地址肯定不是特别方便,此时我们可以配置 Host
在公网环境下访问有安全性问题,此时可以配置 basicAuth,digestAuth,IpWhiteList 或者 openVPN
| 12
 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
| 12
 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
| 12
 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 提供标记