Traefik在云服务器中使用docker中部署配置

254 阅读1分钟

基于云服务部署,在 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

image.png 测试

image.png

image.png

在浏览器访问控制台:
43.xxx.xx.xx:8080/dashboard#/ (云服务器外网IP) image.png