内容简介:之前寫過蠻多篇在啟動 Traefik 服務前,需要建立一個獨立的 Docker 網路,請在 Host 內下
之前寫過蠻多篇 Let’s Encrypt 的使用教學 ,但是這次要跟大家介紹一套非常好用的工具 Traefik 搭配自動化更新 Let’s Encrypt 憑證,為什麼會推薦 Traefik 呢,原因在於 Traefik 可以自動偵測 Docker 容器內的 Label 設定,並且套用設定在 Traefik 服務內,也就是只要修改服務的 docker-compose 內容,重新啟動,Traefik 就可以抓到新的設定。這點在其它 工具 像是 Nginx 或 Caddy 是無法做到的。底下我們來一步一步教大家如何設定啟用前後端服務。全部程式碼都放在 GitHub 上面 了。
教學影片
啟動 Traefik 服務
在啟動 Traefik 服務前,需要建立一個獨立的 Docker 網路,請在 Host 內下
$ docker network create web
接著建立 Traefik 設定檔存放目錄 /opt/traefik
此目錄自由命名。
$ mkdir -p /opt/traefik
接著在此目錄底下建立三個檔案
$ touch /opt/traefik/docker-compose.yml $ touch /opt/traefik/acme.json && chmod 600 /opt/traefik/acme.json $ touch /opt/traefik/traefik.toml
其中 docker-compose.yml
用來啟動 Traefik 服務, acme.json
則是存放 Let’s Encrypt 的憑證,此檔案權限必須為 600
,最後則是 traefik 設定檔 traefik.toml
。一一介紹這些檔案的內容,底下是 docker-compose.yml
version: '2' services: traefik: image: traefik restart: always ports: - 80:80 - 443:443 networks: - web volumes: - /var/run/docker.sock:/var/run/docker.sock - /opt/traefik/traefik.toml:/traefik.toml - /opt/traefik/acme.json:/acme.json container_name: traefik networks: web: external: true
此檔案必須要由 root
使用者來執行,原因是要 Listen 80 及 443 連接埠,其中 acme.json 及 traefik.toml 則由 host 檔案直接掛載進容器內。接著看 traefik.toml
debug = false logLevel = "INFO" defaultEntryPoints = ["https","http"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] [acme] email = "xxxxx@gmail.com" storage = "acme.json" entryPoint = "https" onHostRule = true [acme.httpChallenge] entryPoint = "http" [docker] endpoint = "unix:///var/run/docker.sock" watch = true
其中 onHostRule
用於讀取 docker container 內的 frontend.rule
的 Host
設定,這樣才可以跟 Let’s Encrypt 申請到憑證。最後啟動步驟
$ cd /opt/traefik $ docker-compose up -d
啟動 App 服務
請打開 docker-compose.yml 檔案
version: '3' services: app_1: image: appleboy/test:alpine restart: always networks: - web logging: options: max-size: "100k" max-file: "3" labels: - "traefik.docker.network=web" - "traefik.enable=true" - "traefik.basic.frontend.rule=Host:demo1.ggz.tw" - "traefik.basic.port=8080" - "traefik.basic.protocol=http" app_2: image: appleboy/test:alpine restart: always networks: - web logging: options: max-size: "100k" max-file: "3" labels: - "traefik.docker.network=web" - "traefik.enable=true" - "traefik.basic.frontend.rule=Host:demo2.ggz.tw" - "traefik.basic.port=8080" - "traefik.basic.protocol=http" networks: web: external: true
可以看到透過 docker labels 設定讓 traefik 直接讀取並且套用設定。啟動服務後可以看到 acme.json
已經存放了各個 host 的憑證資訊,未來只要將此檔案備份,就可以不用一直申請了。最後用 curl 來測試看看
心得
由於 Traefik 可以自動讀取 docker label 內容,未來只需要維護 App 的 docker-compose 檔案,對於部署上面相當方便啊,透過底下指令就可以重新啟動容器設定
$ docker-compose up -d --force-recreate --no-deps app
如果對於自動化部署有興趣,可以參考我在 Udemy 上的線上課程
以上所述就是小编给大家介绍的《Traefik 搭配 Docker 自動更新 Let’s Encrypt 憑證》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- oscnews 1.3.0 更新,更新趋势榜功能
- VLOOK V9.23 更新!表格自动排版大更新
- oscnews 1.0.0 更新,软件更新资讯 Chrome 插件
- .NET Framework 4.8 的 Microsoft 更新目录更新
- 网游丨一月一更新,一更更一月,如何实现热更新?
- CCleaner v5.74.8184 发布:重要更新版本、可自动更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Access2003数据库开发典型范例
王樵民 / 第1版 (2006年8月1日) / 2006-8 / 42.00元
Access数据库管理软件是一套集数据管理、程序开发功能于一体的高级办公软件,是特别适合普通办公人员进行日常工作的有力助手。本书面向非计算机专业人员,通过多个实例讲解Access中的各种开发技术,介绍实际工作过程中应用软件的编制方法,以及与Excel等软件之间的信息互用技术等内容。能够帮助读者快速掌握Access数据库的开发技术,构建解决自己工作中实际问题的数据库管理系统,从而提高办公效率。一起来看看 《Access2003数据库开发典型范例》 这本书的介绍吧!