
上一篇作者有提到『什麼是 graceful shutdown?』,本篇透過 docker-compose 方式來驗證 Go 語言的 graceful shutdown 是否可以正常運作。除了驗證之外,單機版 Docker 本身就可以設定 scale 容器數量,那這時候又該如何搭配 graceful shutdown 來實現 rolling update 呢?相信大家對於 rolling update 並不陌生,現在的 Kubernetes 已經有實現這個功能,用簡單的指令就可以達到此需求,但是對於沒有在用 k8s 架構的開發者,可能網站也不大,那該如何透過單機本的 docker 來實現呢?
去年 GitHub 推出 Actions,就有不少開發者相繼把 CI/CD 流程內會使用到的 Plugin 都丟到 Marktetplace,而在這 Docker 容器時代,肯定是需要用自動化上傳容器到 Docker Registry,而官方也在上週正式釋出第一版 GitHub Actions,雖然在 Marktet 尚有不少開發者已經有實現了此功能,但是官方既然推出了,就採用官方的套件會比較適合。底下我們來看看如何使用 Docker 推出的 GitHub Aciton 來自動化上傳 Docker Image。除了介紹如何使用 GitHub Action 上傳 Image 外,我也會拿 Drone 的 Docker Plugin 來進行比較。
最近正打算使用 GitHub Actions 來串接 AWS 服務 (ECR + ECS),上網找了一堆 ECR 套件,發現就連 AWS 官方都只有實作 Login 進 ECR,後面編譯跟上傳動作就需要自己寫。覺得蠻神奇的是為什麼不把 Plugin 寫更完整些,讓使用者不用再執行 docker 指令,所以我直接把 Drone 官方套件直接改寫支援 GitHub Actions 服務,詳細的操作文件可以參考這邊
之前就有看到 Docker 推出 BuildKit 功能,這次跟大家介紹什麼是 BuildKit。現在部署編譯流程肯定都會用到 Docker,不管測試及部署都盡量在 Docker 內實現,來做到環境隔離,但是要怎麼縮短 Docker 在編譯 Image 時間,這又是另外的議題,本篇跟大家介紹一個實驗性的功能就是 BuildKit,原始碼可以參考這邊,希望未來這實驗性的功能可以正式納入 Docker 官方,網路上其實可以找到很多方式來做 Docker Layer 的 Cache,我個人最常用的就是 --cache-from 機制,可以適用在任何 CI/CD 流程,詳細說明可以參考這篇『在 docker-in-docker 環境中使用 cache-from 提升編譯速度』,下面使用到的程式碼都可以直接參考此 Repository,我還是使用 Go 語言當作參考範例。
Gitea 是一套開源的 Git Hosting,除了 Gitea 之外,您可以選擇 GitHub 或自行安裝 GitLab,但是我為什麼選擇 Gitea 呢?原因有底下幾點
1. Gitea 是開源專案,全世界的開發者都可以進行貢獻
2. Gitea 是 Go 語言所開發,啟動速度超快
3. Gitea 開源社區非常完整,每年固定挑選三位為主要負責人
4. Gitea 可以使用執行檔或 Docker 方式進行安裝
本影片會透過 Docker 方式教大家如何快速將 Gitea 安裝在 Ubuntu 環境。安裝時間真不用五分鐘,對於熟悉 Docker 的開發者,可能不用幾分鐘就安裝完成。
以現在開發網站流程,前後端分離已經不稀奇了。前端使用 React.js 或 Vue.js,後端使用 Golang,是我現在擅長的合作模式。其實後端在開發上面不太需要將前端的開發流程放在自己的電腦上,也就是後端只需要專注開發後端,跟前端的溝通都會是透過 GraphQL 的 Schema 當作討論。目前團隊各自維護專案的部署流程會是最好的方式,前端有兩種方式部署,一種是透過打包靜態檔案方式丟到遠端伺服器,另一種就是打包成 Docker Image,再連線到遠端伺服器更新,兩者都有人使用,本篇會教大家如何將前端網站打包成 Docker Image,用 Image 來部署會是最方便的。
由於備份 PostgreSQL 的指令 pg_dump 需要限定特定版本才可以備份,故自己製作用 Docker 容器方式來備份,此工具支援 MySQL, PostgreSQL 跟 Mongodb,只要一個 docker-compose yaml 檔案就可以進行線上的備份,並且上傳到 AWS S3,另外也可以設定每天晚上固定時間點進行時間備份,也就是平常所設定的 cron job。
重要提醒:因此平台 Udemy 為境外公司,在 Udemy 的刷卡屬於境外刷卡,您的信用卡公司會另外向您收取大約 1.5% 的國外交易手續費。手續費根據各家信用卡公司規定有所不同,詳細數字需與您的發卡銀行確認。
課程介紹:
現在軟體工程師如果還不知道 Docker 就已經太落伍了,本課程著重在實戰上面的介紹。藉由實戰經驗來了解如何使用 Docker 容器技術,透過容器可以減少開發環境建置時間,除了開發環境,Docker 也可以協助快速建置雲端環境,您不用在主機上面從無到有建置 Node.js 或 PHP 等相關設定環境,大大減少維運或開發者建置時間,這些省下來的時間都可以拿來開發多少功能需求了。所以你還不會 Docker 嗎?現在各種求職平台或工作內容都會寫上 Docker 需求,雖然 Docker 容器技術不是必須,但是這都是加分條件,開發者會 Docker 真的會讓團隊戰力更加完整。現在就開始加入學習 Docker 實戰吧。
課程緣由:
在各種教學平台上已經有很多課程介紹 Docker 容器技術,很多 Docker 的基礎教學都非常完整,所以這門課程會著重在 Docker 實戰,藉由工作上會用到的 Docker 容器技術加以介紹,所以課程內容會相當廣泛,介紹各種不同的工具及平台來協助團隊在部署或架構面上更完整。像是底下一系列相關應用及部署技巧
用 docker-compose 快速安裝 Gitea (Git Host 最將選擇)
用 Docker 直接快速部署到 Heroku 平台
用 docker-compose 實現 rolling update 機制
用 Docker 搭配 GitHub Action 部署 Go 語言服務
用 Docker 快速建置 PHP Laravel 開發環境
介紹 docker 使用 cache from 機制加快 docker image 編譯
使用 Traefik 搭配容器服務
透過 Docker 也可以將 Flutter 自動化測試
未來預計還會有像是 Kubernetes 部署及建制,或者是 Prometheus + Grafana 系統效能監控等主題。