文章目錄
使用 dockerfile 建立 Windows Container 版 Jenkins
之前文章 將 Jenkins 建立在 Windows Container 上 分享了如何將 Jenkins 建立在 Windows container 中,而其文末也提到透過文章中介紹的方法來建立 Jenkins container 還有一些缺點待改善,像是 image 的大小及安裝太繁瑣等問題
今天就先來解決安裝太繁瑣的問題 - 透過 dockerfile 來建立 Windows Jenkins container
前置作業
以下指令請使用 PowerShell 執行
建立 Jenkins container 使用的資料夾
建立根資料夾
New-Item -Type Directory -Name jenkins -Path c:\
建立 Jenkins 安裝檔存放資料夾
New-Item -Type Directory -Name setup -path C:\jenkins\
下載 Jenkins
請自行至 官網 下載安裝程式,並解壓縮取得
Jenkins.msi
將 Jenkins 安裝檔複製至
setup
資料夾中在 Jenkins container 資料夾中建立
dockerfile
New-Item -Type File -Name dockerfile -Path C:\jenkins\
加上 dockerfile 內容
#指定基礎 os image FROM microsoft/windowsservercore #將 jenkins 安裝檔複製到 container 中 ADD ./setup c:/jenkins #安裝 jenkins RUN ["msiexec.exe", "/i", "C:\\jenkins\\jenkins.msi", "/qn"] #移除 container 中的安裝檔(讓 image 保持乾淨) RUN Powershell.exe -Command remove-item c:/jenkins -Recurse #對外使用 8080 port EXPOSE 8080 #如果有 slave 需加上 50000 port EXPOSE 50000
建立 docker image 及 container
編譯 image
docker build -t yowko/winjenkins:latest c:\jenkins\
編譯完成
確認建立 image
建立 container
docker run -it --name winjenkins -p 8080:8080 yowko/winjenkins:latest powershell
這邊透過互動模式執行
powershell
讓 container 運行起來,否則 container 還是會自動 stop,進到 container 中後再透過ctrl+p, ctrl+q
退出,讓 container 持續執行或是執行一個永不停止的指令來讓 container 持續運行
docker run -d -p 8080:8080 --name winjenkins yowko/winjenkins:latest ping localhost -t
正常使用
在 container 的 host server 上需要使用 container 內部 ip 來連線
windosw container 尚未支援
localhost
port mapping 至 container 中在其他機器中就直接使用
host server ip
+前面 mapping 的 port
來連線取得 jenkins 驗證 key
在 container 中執行
type 'C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword'
心得
透過 dockerfile 來 build 出 image 比起從無到有手動安裝,看起步驟比較少,只是加上嘗試安裝語法及反覆編譯的時間,如果只用一次,在時間上並不是很划算,但有經常更新版本的需求時,dockerfile 就會省不少事
以前文提到需要改善的部份,今天先針對安裝繁瑣問題做了一些調整,但對於讓 container 持續執行的做法,可能還要再找找其他方式,總覺得不夠聰明
如果懶得自行建立 dockerfile 再 build 成 image,我把做好的 image 上傳到 docker hub 了,可以直接使用 yowko/winjenkins
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。