> For the complete documentation index, see [llms.txt](https://philipzheng.gitbook.io/docker_practice/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://philipzheng.gitbook.io/docker_practice/case_devops.md).

# 實戰案例：DevOps

## 版本說明

本章示例中使用的映像檔版本遵循以下原則：

* **GitHub Actions**（`actions/checkout@v7` 等）採用大版本標籤，代表最新的功能版本與穩定性的平衡
* **程式語言映像檔**（`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 完整工作流](/docker_practice/case_devops/devops_workflow.md) — 從程式碼到部署的全流程
* [GitHub Actions](/docker_practice/case_devops/github_actions.md) — 使用 GitHub Actions 實作 CI/CD
* [Drone](/docker_practice/case_devops/drone.md) — Drone CI/CD 平台簡介和設定
* [Drone Demo](/docker_practice/case_devops/drone_demo.md) — Drone 實戰演示和應用
* [在 IDE 中使用 Docker](/docker_practice/case_devops/ide.md) — IDE 與 Docker 整合的好處
* [VS Code](/docker_practice/case_devops/vscode.md) — Visual Studio Code 容器開發指南
* [實戰例子](/docker_practice/case_devops/practical_examples.md) — 真實專案中的 DevOps 應用案例

## 本章小結

本章透過一個完整的 DevOps 工作流示例，串聯了從程式碼提交、自動化測試、映像檔建立、 到部署發布的一整套實踐路徑。

在落地時，建議重點把握以下原則：

* **不可變交付物**：同一份產物（映像檔）在不同環境中流轉，使用 commit hash 等方式標識版本。
* **最小權限與密鑰管理**：CI 平台權限盡量收斂，敏感資訊使用 Secret 管理並定期輪換。
* **流水線可觀測與可回滾**：為關鍵步驟保留日誌與製品，發布失敗時能快速定位並回滾。
* **開發環境一致性**：透過 Dev Containers / compose 開發容器減少「在我電腦上可以」的問題。

下一步你可以根據團隊現狀選擇一條主線深入：

* 已在用 GitHub：優先補全 Actions 的快取、製品、發布策略。
* 自建體系：結合私有 Registry、Kubernetes 與 GitOps 工具完善部署與審計。
