第二十一章 實戰案例 - DevOps
版本說明
本章範例中使用的映象版本遵循以下原則:
- GitHub Actions (
actions/checkout@v6等) 採用大版本標籤,代表最新的功能版本與穩定性的平衡 - 程式語言映象 (
golang:1.26-alpine、rust:1.95-alpine等) 採用次版本標籤,確保 API 穩定性同時獲得安全更新 - 資料庫映象 (
postgres:16-alpine、redis:8-alpine等) 採用大版本標籤,便於獲得修復和改進 - 基礎映象 (
alpine:3.21、debian:12等) 採用大版本或次版本標籤,避免latest以確保可再現性 - 實際專案中應根據需求調整版本,生產環境建議定期更新以獲取安全補丁
DevOps 背景介紹
DevOps 是一種重要的開發和運維文化,強調開發團隊和運維團隊之間的協作和自動化。它致力於透過自動化和流程最佳化,加快軟體交付速度,同時提高系統的穩定性和可靠性。Docker 作為容器化技術的領導者,已成為現代 DevOps 工作流中不可或缺的工具。透過容器化應用,開發團隊可以確保『一次建立,處處執行』,消除開發、測試和生產環境的差異,大大簡化了部署流程。
Docker 在 DevOps 中的角色
Docker 在 DevOps 工作流中承擔多個關鍵角色。首先,它標準化了應用的開發和部署環境,使得團隊成員在相同的 Docker 容器中工作,避免了『在我的機器上可以執行』的問題。其次,Docker 與 CI/CD 流程無縫整合,透過自動化的映象建立、測試和部署,實現快速的迭代週期。此外,Docker 還支援微服務架構和容器編排,使團隊能夠更靈活地擴充套件應用和管理基礎設施。
CI/CD 通道的重要性
持續整合與持續部署 (CI/CD) 是現代 DevOps 的核心。透過自動化的程式碼檢測、測試、建立和部署流程,團隊可以更加頻繁地發布新版本,同時保持系統的穩定性和可靠性。Docker 在 CI/CD 中扮演了重要角色:
- 標準化建立環境 - Docker 確保開發、測試和生產環境完全一致,消除了環境差異帶來的問題
- 加速流水線 - 容器的快速啟動和輕量級屬性,大幅加快了 CI/CD 流程的執行效率
- 靈活的測試框架 - 可以輕鬆建立短生命週期的測試容器,並行執行多個測試
- 自動化映象發布 - CI/CD 工具可以自動建立、掃描、標記和推送 Docker 映象到倉庫
- 藍綠部署和金絲雀發布 - 利用容器的隔離性和可重複性,實現高階發布策略
本章將透過介紹 GitHub Actions、Drone 等流行的 CI/CD 工具,展示如何在實際專案中建立完整的自動化流水線。我們還將示範如何在本地開發環境中整合 Docker,使用 IDE 的容器開發外掛,加快本地迭代週期。
本章學習目標
透過學習本章內容,你將能夠:
- 理解 DevOps 文化、CI/CD 流程和容器化的緊密關係
- 掌握完整的 Docker 工作流,從程式碼送出到線上部署的每一個環節
- 學習如何使用 GitHub Actions 實現自動化 CI/CD,以及工作流的編寫和最佳化
- 瞭解 Drone 等第三方 CI/CD 工具的架構、部署和設定方式
- 學會在本地 IDE (VS Code) 中整合 Docker,利用容器開發工具提升開發效率
- 掌握實戰中常見的 DevOps 場景、最佳實踐和故障排查方法
章節內容導向
- DevOps 完整工作流 — 從程式碼到部署的全流程
- GitHub Actions — 使用 GitHub Actions 實現 CI/CD
- Drone — Drone CI/CD 平台簡介和設定
- Drone Demo — Drone 實戰示範和應用
- 在 IDE 中使用 Docker — IDE 與 Docker 整合的好處
- VS Code — Visual Studio Code 容器開發指南
- 實戰例子 — 真實專案中的 DevOps 應用案例
- 本章小結