這標題也許有點誇張,但是如果實際操作一次,肯定可以在 10 分鐘內操作完成。本篇來教大家如何用 Traefik 當作前端 Proxy,後端搭配 Drone 服務接 GitHub,為什麼會用 Traefik,原因很簡單,你可以把 Traefik 角色想成是 Nginx,但是又比 Nginx 更簡單設定,另外一點就是,Traefik 自動整合了 Let’s Encrypt 服務,您就不用擔心憑證會過期的問題。假如機器只會有一個 Drone 當 Host 的話,其實也可以不使用 Traefik,因為 Drone 其實也是內建自動更新憑證的功能。如果您對 Traefik 有興趣,可以直接參考底下兩篇文章
- 用 Traefik 搭配 Docker 快速架設服務 (內附教學影片)
- Traefik 搭配 Docker 自動更新 Let’s Encrypt 憑證 (內附教學影片)
教學影片
- 00:37 架設 Traefik 服務 Listen 80 及 443 port
- 02:42 用 Docker 架設 Drone 並且透過 Label 跟 Traefik 串接
- 04:11 在 GitHub 申請 App Client ID 及 Secret
更多實戰影片可以參考我的 Udemy 教學系列
- Go 語言實戰課程: http://bit.ly/golang-2019
- Drone CI/CD 自動化課程: http://bit.ly/drone-2019
設定單一 Drone 服務
為什麼說是單一 Drone 服務呢,原因是在 Drone 1.0 開始支援在單一容器內就可以跑 server 跟 agent 同時啟動,降低大家入門門檻,本篇就是以單一容器來介紹,當然如果團隊比較大,建議還是把 server 跟 agent 拆開會比較適合。先建立 docker-compose.yml
,相關代碼都可以在這邊找到。
|
|
接著建立 .env
,並且寫入底下資料
其中 proto 預設是跑 http,這邊不用動,traefik 會自動接上 container port,drone 預設跑在 80 port,這邊跟前一版的 drone 有些差異,請在 traefik.basic.port
設定 80
喔,接著跑 docker-compose up
|
|
如果看到上面的訊息,代表已經架設完成。先假設各位已經都先安裝好 traefik,透過 docker label,traefik 會自動將流量 proxy 到對應的 container。
心得
這是我玩過最簡單的 CI/CD 開源專案,設定相當容易,作者花了很多心思在這上面。另外我會在四月北上參加『CI / CD 大亂鬥』擔任 Drone 的代表,希望可以在現場多認識一些朋友,如果對 Drone 有任何疑問,隨時歡迎找我,或直接到現場交流。
See also
- 開源專案 Drone CI/CD 平台真的免費嗎?
- Go 1.16 推出 Embedding Files
- 用 Docker 每天自動化備份 MySQL, Postgres 或 MongoDB 並上傳到 AWS S3
- 如何將前端網站打包成 Docker Image
- Go 1.15 新增 Module cache 環境變數
- 使用 Docker BuildKit 加速編譯 Image
- 用 GitHub Actions 上傳 Docker Image 到 AWS ECR
- Docker 推出官方 GitHub Actions 套件
- Go Modules 處理 Private GIT Repository 流程
- 用五分鐘安裝好 Drone 搭配 GitHub 自動化環境