以下配置来自:https://blog.csdn.net/wave_sheep/article/details/104186192

感谢作者!

traefik.yaml

version: '3'

services:
reverse-proxy:
image: traefik:v2.8
command:
# 启用dashboard
- "--api.dashboard=true"
- "--providers.docker.swarmMode=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=traefik-public"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.le.acme.httpchallenge=true"
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencryptresolver.acme.email=填一个你自己的邮箱"
- "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json"
ports:
- 80:80
- 443:443
volumes:
- traefik-certificates:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- traefik-public
deploy:
placement:
constraints:
- node.role == manager
labels:
- "traefik.enable=true"
- "traefik.http.routers.http2https.rule=HostRegexp(`{any:.+}`)"
- "traefik.http.routers.http2https.entrypoints=web"
- "traefik.http.routers.http2https.middlewares=https-redirect"
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.https-redirect.redirectscheme.permanent=true"
# dashboard配置
- "traefik.http.routers.api.rule=Host(`traefik.xxxx.cn`)"
- "traefik.http.routers.api.entrypoints=websecure"
- "traefik.http.routers.api.tls.certresolver=le"
# 获取dashboard提供器
# PS: @后面变量表示提供者, 像之前的hello-world实际上省略了@docker
- "traefik.http.routers.api.service=api@internal"
# 基本验证中间件
- "traefik.http.routers.api.middlewares=api-auth"
# 配置用户名密码
# 这里默认是用户名密码都是admin
# 可以用htpasswd(https://httpd.apache.org/docs/2.4/programs/htpasswd.html)生成用户名密码
- "traefik.http.middlewares.api-auth.basicauth.users=admin:$$apr1$$8EVjn/nj$$GiLUZqcbueTFeD23SuB6x0"
# 最最关键的一步,创建一个noop虚服务的loadbalancer,port随便选,不然上面的label配置不会生效
- "traefik.http.services.noop.loadbalancer.server.port=9999" networks:
traefik-public:
external: true
volumes:
traefik-certificates:

部署: docker stack deploy --compose-file traefik.yaml test

hellWorld.yaml

version: '3'
services:
helloworld:
image: tutum/hello-world:latest
networks:
- traefik-public
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.helloworld.rule=Host(`nginx.xxxx.cn`)"
# 将对外暴露点改为websecure
- "traefik.http.routers.helloworld.entrypoints=websecure"
# 与traefik配置里创建的resolver名字对应
- "traefik.http.routers.helloworld.tls.certresolver=le"
- "traefik.http.services.helloworld.loadbalancer.server.port=80"
networks:
traefik-public:
external: true

部署: docker stack deploy --compose-file helloWorld.yaml test

最新文章

  1. jira的插件开发流程实践
  2. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 网络订单提醒功能,网点区域功能增强
  3. HTML与XHTML
  4. NPM 与 left-pad 事件:我们是不是早已忘记该如何好好地编程?
  5. Android的界面设计工具 DroidDraw
  6. struts2常用的常量constant
  7. 4.0之后的hibernate获取sessionFactory
  8. [每日一题] 11gOCP 1z0-052 :2013-09-27 bitmap index.................................................C37
  9. C# 微信 企业号通知消息
  10. css选择器:nth-child()与:nth-of-type()的差异
  11. Scanner,Random,匿名对象-------------------java基础学习第七天
  12. mock测试
  13. k8s部署spring-boot项目失败
  14. IntelliJ IDEA 2017版 spring-boot2.0.2 自动配置Condition
  15. Python基础(11)——反射、异常处理
  16. 排序基础之归并排序、快排、堆排序、希尔排序思路讲解与Java代码实现
  17. C#设计模式(6)——原型模式(Prototype Pattern) C# 深浅复制 MemberwiseClone
  18. Android Studio导入包
  19. centos配置用户级别的jdk的环境变量
  20. 使用 Hexo + github 搭建个人博客

热门文章

  1. json 提取器将提取的所有id拼接成字符串
  2. python 之集合(set)
  3. java下载网络文件的N种方式
  4. [C#]C++/CLI中interior_ptr和pin_ptr的区别
  5. 上古神兵,先天至宝,Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略)
  6. djiango路由匹配、djiango路由层、反向解析、有名无名反向解析
  7. django框架之drf(部分讲解)
  8. HuggingNews #0210 这周模型有点多,快来看看吧
  9. 汉诺塔 Java && Cpp 实现
  10. 精美的web前端源码的特效