February 7, 2021 · 技术文章
docker 部署traefik并打开dashboard
介绍
traefik是个反向代理并负载均衡的工具,比较方便的地方在于能够证书自签。
配置步骤
- 先使用docker network create traefik-public来创建一个网络。
- 在主机任一目标下创建一个文件。比如说在~/docker-compose-files/目录中新建一个traefik_docker_compose.yml文件,文件内容如下:
version: "3.3"
services:
traefik:
image: "traefik:v2.4"
container_name: "traefik"
restart: "always"
command:
- '--api=true'
- '--api.dashboard=true'
- '--providers.docker.endpoint=unix:///var/run/docker.sock'
- '--providers.docker.exposedbydefault=false'
- '--providers.docker.network=traefik-public'
- '--entrypoints.web.address=:80'
- '--entrypoints.websecure.address=:443'
- '--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true'
- '--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web'
- '--certificatesresolvers.letsencryptresolver.acme.email=a18814888787@gmail.com'
- '--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json'
ports:
- "80:80"
- "443:443"
- "8080:8080"
networks:
- traefik-public
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
- 'traefik.http.routers.http-catchall.rule=PathPrefix(`/`)'
- 'traefik.http.routers.http-catchall.entrypoints=web'
- 'traefik.http.routers.http-catchall.middlewares=redirect-to-https'
- 'traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https'
- 'traefik.http.routers.traefik.rule=(Host(`traefik.xxxx.com`)) && (PathPrefix(`/traefik`) || PathPrefix(`/api`))' # Put in your domain
- 'traefik.http.routers.traefik.entrypoints=websecure'
- 'traefik.http.routers.traefik.tls.certresolver=letsencryptresolver'
- 'traefik.http.routers.traefik.service=api@internal'
- 'traefik.http.services.api@internal.loadbalancer.server.port=8080'
- 'traefik.http.routers.traefik.middlewares=strip'
- 'traefik.http.middlewares.strip.stripprefix.prefixes=/traefik'
whoami:
image: "traefik/whoami"
container_name: "traefik-service"
restart: "always"
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.whoami.rule=(Host(`traefik.xxxx.com`))'
- 'traefik.http.routers.whoami.entrypoints=websecure'
- 'traefik.http.routers.whoami.tls.certresolver=letsencryptresolver'
- 'traefik.http.routers.whoami.service=whoamiservice'
- 'traefik.http.services.whoamiservice.loadbalancer.server.port=80'
networks:
- traefik-public
最后通过docker-compose -f traefik_docker_compose.yml up -d 命令启动容器。在域名解析增加ip后,可以通过http://traefik.xxxx.com/traefik 来进入traefik的dashboard.