traefik 搭建

traefik 是一个现代化的反向代理与负载均衡器,它可以很容易地同 Docker 集成在一起使用。每当 Docker 容器部署成功,便可以自动在网络上进行访问。
配置一下 docker compose 可启动 traefik 服务。

  1. version: '3'
  2. services:
  3. traefik:
  4. image: traefik:v2.5
  5. command: --api.insecure=true --providers.docker
  6. ports:
  7. - "80:80"
  8. - "8080:8080"
  9. volumes:
  10. - /var/run/docker.sock:/var/run/docker.sock

使用 docker-compose up 启动 traefik 后,此时会默认新建一个 4-tracfik-deployment_default 的网络。这个网络名称很重要,要记住。

启动一个任意的服务

启动一个 whoami 的简易版 Web 服务,它将会在页面上打印出一些头部信息。

  1. version: '3'
  2. services:
  3. # 改镜像会暴露出自身的 `header` 信息
  4. whoami:
  5. image: containous/whoami
  6. labels:
  7. # 设置Host 为 whoami.docker.localhost 进行域名访问
  8. - "traefik.http.routers.whoami.rule=Host(`whoami.shanyue.local`)"
  9. # 使用已存在的 traefik 的 network
  10. networks:
  11. default:
  12. external:
  13. name: 4-tracfik-deployment_default

那 whoami 服务做了什么事情呢

  1. 暴露了一个 http 服务,主要提供一些 header 以及 ip 信息
  2. 配置了容器的 labels,设置该服务的 Host 为 whoami.shanyue.local,给 traefik 提供标记

此时我们可以通过主机名 whoami.shanyue.locol 来访问 whoami 服务,我们使用 curl 做测试

PS: whoami.shanyue.locol 可以是任意域名,此处仅做测试。如果你拥有个人域名,替换成个人域名后,可在任意互联网处进行访问。

服务正常访问。
此时如果把 Host 配置为自己的域名,则已经可以使用自己的域名来提供服务。