为了方便管理采用文件映射的方式改变traefik里面的一些配置,我的文件都是放在root目录下。安装docker之后。
- 在root目录下创建traefik文件夹,添加两个文件。
(1)docker-compose-demo.yml
version: "3"
services:
traefik:
image: traefik:v2.5
deploy:
mode: global
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M
ports:
这里隐射的是http端口
- 80:80
这里隐射的是dashboard端口
- 8080:8080
volumes:
注意这里映射路径,/root/traefik/traefik-config.yml为我们traefik-config.yml的位置。
- /root/traefik/traefik-config.yml:/etc/traefik/config.yml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
command:
- --log.level=DEBUG
- --global.sendanonymoususage=false
- --api.dashboard=true
- --api.insecure=true
- --providers.docker.endpoint=unix:///var/run/docker.sock
- --providers.docker.watch=true
- --providers.docker.exposedbydefault=false
- --providers.docker.swarmmode=true
- --providers.file.filename=/etc/traefik/config.yml
- --providers.file.watch=true
- --entrypoints.http.address=:80
(2)traefik-config.yml
配置访问的dashboard等访问接口
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
(3)添加完成后启动
docker stack deploy -c /root/traefik/docker-compose-demo.yml 相同的名字 #相同的名字就会是在同一个集群中
如果没有装过dockerswarm会报错,就执行以下三步,完成后继续执行之前的命令。
docker pull swarm
docker swarm init --advertise-addr 自己的ip
docker network create -d overlay --attachable traefik //初始化网络名称,上面填的那个网络的名字
(4)以上工作完成后,在浏览器上输入ip:8080可以定向到
- 从其他服务器上迁移微服务。
(1)在root下又创建一个目录(服务名)我的为traefik-secrity.yml,将以下内容复制进去,然后输入docker stack deploy -c /root/security/traefik-security.yml security就能启动了,security为自己为这个服务起的名字,失败的话可能是需要登陆阿里云镜像,成功后就能访问了。注意:下面的security这个名字,每个服务都应该不一致!!!
version: '3'
services:
security:
image: 镜像名
deploy:
replicas: 1
resources:
limits:
cpus: '0.50'
memory: 512M
labels:
- traefik.enable=true
- traefik.http.routers.security-http.rule=PathPrefix(`/前缀/`)
- traefik.http.routers.security-http.entrypoints=http
- traefik.http.routers.security-https.tls=false
- traefik.http.services.security.loadbalancer.server.port=端口号
networks:
- traefik
networks:
traefik:
external: true
3.Docker Stack部署
docker stack rm 服务简称
docker rmi 镜像:版本号
docker pull 镜像:版本号
docker stack deploy -c 服务yml文件路径 服务简称