在以前我们一般使用nginx做反向代理来实现在单服务器上部署多服务。
现在随着Docker的流行,现在越来越多开发人员喜欢在单服务器上使用Docker来部署多服务,这样做的好处是显而易见的:资源占用少,系统健壮性更高(崩一个容器不会影响其他容器的运行),省经费(不必为了不同的运行环境而购置多个服务器)等……。
但是nginx和docker的相处不是那么融洽,所以treafik作为天生支持docker的反向代理就诞生了,它还带有负载均衡,支持https等其他诸多优点。treafik官网:https://traefik.io/
so let’s use it
1.目录结构,certs目录是我用来保存https证书用的,并不需要非这么写。
2.docker-compose.yml
treafik运行在docker里,docker-compose是它的部署文件,类似于dockerfile但是比它更优
version: '3'
networks:
traefiknet:
driver: bridge
services:
traefik:
image: traefik:v1.5.4-alpine # 我用的这个版本,treafik的版本是个坑
command: --api --docker --docker.domain=test.com # Enables the web UI and tells Træfik to listen to docker ( --logLevel=ERROR,INFO) 这里我指定它监听domain为test.com的docker容器,domain配置可以在生成容器时加入--domain test.com实现
ports:
- "80:80" # The HTTP port
- "443:443" # The HTTPS port
- "8080:8080" # The Web UI (enabled by --api) 在treafik部署好后访问8080端口会显示treafik的管理界面
networks:
- traefiknet
labels:
- "traefik.port=8080"
- "traefik.frontend.rule=Host:test.cn" # Traefik Web UI monitor treafik管理界面的域名
- "traefik.backend=test" # Name the Traefik