traefik是微服务架构里常用的一种反向代理.相对于nginx, traefik最大的区别是支持动态配置路由的.也就是每当你的微服务经历新启动、移除、停止或更新时都会被感知,并且可以自动更新对应的配置文件.
以下简单说明下通过docker-compose来启动traefik的流程.
- 首先创建一个专有网络(让traefik和所有需要反向代理的微服务在同一个网络中)
docker network create gwnetwork
- 然后定义一个traefik.toml文件
defaultEntryPoints = ["http"]
insecureSkipVerify = true
[entryPoints]
[entryPoints.http]
address = ":80"
- 然后定义一个docker-compose.yml文件(假设和上面toml文件在相同目录)
version: '2'
services:
proxy:
image: traefik
command: --api --docker --docker.domain=docker.localhost --logLevel=DEBUG
networks:
- apinetwork
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/etc/traefik/traefik.toml
networks:
apinetwork:
external:
name: gwnetwork
- docker-compose启动traefik
sudo docker-compose up -d
这时可以通过http://localhost:8080
上打开traefik的ui管理页面.之后启动微服务容器的时候,加上对应的label即可,比如
labels:
- "traefik.backend=test"
- "traefik.frontend.rule=Host:test.a.com"
- "traefik.docker.port=80"