在建立自動化交付鏈條時,Jenkins 作為核心調度引擎,其穩定性與可擴展性直接決定了 CI/CD 流程的成效。為了確保環境的可重現性並簡化維運難度,我們採用 Docker Compose 進行部署。本篇將詳細解析如何選擇正確的映像檔、配置數據持久化,以及完成初始化的安全性設定。
在我們的網路架構中,Jenkins 扮演著「內部執行者(Internal Worker)」的角色。
整體 workflow 為:開發者在 GitHub (Public) 提交代碼 -> 觸發 GitHub Actions (Orchestrator) -> 透過 GitLab (Proxy) 轉發指令 -> 最終抵達位於內部網路(<JENKINS_IP>)的 Jenkins 執行具體任務。為了對外提供穩定服務,Jenkins 同樣掛載於 <REVERSE_PROXY_IP> 的 IIS Reverse Proxy 之後,網址為 https://ci-cd.example.com/jenkins/。
在生產環境中,穩定性高於一切。Jenkins 官方提供了多種映像檔標籤,我們的選擇標準如下:
jenkins/jenkins:lts-jdk17 映像檔。透過宣告式的 YAML 檔案,我們能將網路配置、磁碟掛載與環境變數版本化,實現一鍵啟動。
services:
jenkins:
image: jenkins/jenkins:lts-jdk17
container_name: jenkins-core
restart: unless-stopped
ports:
- "8080:8080" # Jenkins Web UI
- "50000:50000" # 用於 Agent 節點連線的通訊埠
volumes:
- /home/jenkins_home:/var/jenkins_home
environment:
- JAVA_OPTS=-Dhudson.model.DirectoryBrowserSupport.CSP= -Duser.timezone=Asia/Taipei
- JENKINS_UC_DOWNLOAD=https://get.jenkins.io/war-stable/ # 可視需求調整為日本鏡像
- JENKINS_OPTS=--prefix=/jenkins
Jenkins 的所有配置(工作空間、外掛程式、金鑰)都儲存在 /var/jenkins_home。
/home/jenkins_home 掛載至容器內。Jenkins 容器內部以 uid: 1000 運行。若使用掛載宿主機目錄(Bind Mount),需確保該目錄的擁有者已正確設定,否則將導致啟動失敗。執行 docker compose up -d 啟動服務。
啟動後,需輸入初始管理員密碼。可透過以下指令取得:
docker exec jenkins-core cat /var/jenkins_home/secrets/initialAdminPassword
初始化畫面會詢問是否安裝「建議的外掛程式」。
完成初始化後,務必立即執行以下操作:
admin 帳號。Manage Jenkins -> Security,確保匿名使用者不具備任何權限。透過 Docker Compose,我們成功建置了一個標準化且易於遷移的 Jenkins 核心系統。持久化磁碟區的設計確保了數據的安全,而 LTS 版本的選擇則為系統穩定性提供了保障。
核心系統已就位,明天的文章我們將進入實戰階段,探討如何配置專門負責高強度運算的 Jenkins 分散式執行節點 (Agent)。