基于云服务部署,在 Docker 中使用 Traefik 大致可能会涉及到两个文件:
- docker-compose.yml
- traefik-config.yml(动态配置)
[root@VM-12-5-centos ~]# vi docker-compose.yml
version: '3'
services:
traefik:
# The official v2 Traefik docker image
image: "traefik:v2.9"
container_name: "traefik"
# Enables the web UI and tells Traefik to listen to docker
command:
- --api=true
- --api.insecure=true
- --api.dashboard=true
- --providers.docker=true
- --providers.docker.endpoint=unix:///var/run/docker.sock
- --providers.docker.watch=true
- --providers.file.directory=/etc/traefik
- --providers.file.filename=/etc/traefik/config.yml
- --log.filePath=/var/log/traefik/traefik.log
- --log.format=json
- --log.level=DEBUG
- --accesslog=true
- --accesslog.filepath=/var/log/traefik/access.log
- --accesslog.format=json
- --entrypoints.http.address=:80
ports:
# The HTTP port
- "80:80"
- "443:443"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
- /home/traefik/config:/etc/traefik
- /home/traefik/config/traefik-config.yml:/etc/traefik/config.yml
- /home/traefik/logs/traefik:/var/log/traefik
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- minikube
whoami:
image: "containous/whoami"
container_name: "simple-service"
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`traefik.pbeta.cn`) && Path(`/whoami`)"
networks:
- minikube
# 指定网络
networks:
minikube:
external: true
在/home/traefik/config目录创建traefik-config.yml动态配置文件
[root@VM-12-5-centos ~]# cat traefik/config/traefik-config.yml
http:
services:
dashboardHttp:
loadBalancer:
servers:
- url: "http://127.0.0.1:8080/"
routers:
traefikDashboard:
rule: "PathPrefix(`/dashboard/`)"
service: "dashboardHttp"
entrypoints: http
tls: false
traefikApi:
rule: "PathPrefix(`/api/`)"
service: "api@internal"
ebtrypoints: http
tls: false
# whoami:
# rule: "Host(`traefik.pbeta.cn`) && PathPrefix(`/whoami/`)"
# service: "whoami@docker"
# ebtrypoints: http
# tls: false
上述containous/whoami测试镜像,可以在docker-compose.yml配置,也可以在traefik-config.yml配置,在动态文件中配置,需要提前下载containous/whoam镜像,并启动
$ docker pull containous/whoami
$ docker run -d -P --name simple-service --net minikube containous/whoami
部署安装:
[root@VM-12-5-centos ~]# docker-compose -f docker-compose.yml up -d
测试
- 本机测试
[root@VM-12-5-centos ~]# curl -H Host:traefik.pbeta.cn http://127.0.0.1/whoami
- 外网测试
C:\Users\EDY>curl -H Host:traefik.pbeta.cn http://IP(云服务器外网IP)/whoami
在浏览器访问控制台:
43.xxx.xx.xx:8080/dashboard#/ (云服务器外网IP)