如何使用 GitHub Actions 構(gòu)建 Docker 鏡像
本文將幫助您使用GitHub操作設(shè)置一個(gè)工作流,該工作流將構(gòu)建和標(biāo)記Docker鏡像并將其推送到Docker Hub注冊(cè)表。
創(chuàng)建 GitHub Repo
讓我們從創(chuàng)建一個(gè)新的GitHub存儲(chǔ)庫(kù)開(kāi)始,它將保存我們的代碼(在我們的例子中,實(shí)際上只需要一個(gè)Dockerfile)來(lái)構(gòu)建鏡像。在GitHub中創(chuàng)建repo,并將其命名為您想要的任何名稱(chēng)。在repo的根目錄中添加一個(gè)文件,名為Dockerfile。如果你沿著我,你將構(gòu)建一個(gè)包含Angular CLI的鏡像。如果你需要一個(gè)不同的鏡像,那么修改以下內(nèi)容以滿(mǎn)足你的需求。Dockerfile的內(nèi)容應(yīng)該是:
# ./Dockerfile
FROM node:12-alpine as node-angular-cli
LABEL authors="Tinywan"
# Linux setup
# I got this from another, deprecated Angular CLI image.
# I trust that developer, so I continued to use this, but you
# can leave it out if you want.
RUN apk update \
&& apk add --update alpine-sdk \
&& apk del alpine-sdk \
&& rm -rf /tmp/* /var/cache/apk/* *.tar.gz ~/.npm \
&& npm cache verify \
&& sed -i -e "s/bin\/ash/bin\/sh/" /etc/passwd
# Angular CLI
RUN npm install -g @angular/cli@8
創(chuàng)建GitHub Action
因此,要開(kāi)始使用GitHub操作,請(qǐng)?jiān)贕itHub中的repo頁(yè)面上單擊Actions選項(xiàng)卡:
圖片
您現(xiàn)在應(yīng)該看到一個(gè)類(lèi)似于以下內(nèi)容的頁(yè)面:
圖片
這一步將我們登錄到Docker Hub Registry。我們輸出密碼,然后將其傳遞給docker login命令。不過(guò),這里有一些新的東西,那就是我們正在使用的秘密。GitHub在每個(gè)存儲(chǔ)庫(kù)的設(shè)置中有一個(gè)部分,您可以在其中設(shè)置用于GitHub操作等的秘密。
這很棒,因?yàn)榉駝t就沒(méi)有辦法登錄到第三方服務(wù),如Docker Hub,而不把你的密碼或訪問(wèn)密鑰放在倉(cāng)庫(kù)中,每個(gè)人都可以看到。要找到secrets,請(qǐng)單擊存儲(chǔ)庫(kù)頂部的設(shè)置,然后單擊左側(cè)導(dǎo)航列表中的Secrets,然后添加您需要的secrets,在本例中是我們的Docker Hub用戶(hù)名和密碼:
圖片
標(biāo)簽和發(fā)布
最后一步是在我們的GitHub存儲(chǔ)庫(kù)中標(biāo)記一個(gè)版本。這將啟動(dòng)我們的工作流程的構(gòu)建。要做到這一點(diǎn),點(diǎn)擊代碼標(biāo)簽下的releases部分:
圖片
點(diǎn)擊“Draft a new release”按鈕。GitHub將引導(dǎo)您完成創(chuàng)建發(fā)布的步驟,但您應(yīng)該選擇標(biāo)記名稱(chēng)和所需的發(fā)布提交。您還可以添加標(biāo)題和說(shuō)明。記住兩件事:您在這里使用的標(biāo)簽名稱(chēng)將用作Docker鏡像的標(biāo)簽名稱(chēng),一旦您單擊“發(fā)布版本”按鈕,工作流將啟動(dòng)。一旦你準(zhǔn)備好了,發(fā)布新版本!
查看工作流輸出
要查看工作流中發(fā)生的情況,并在需要時(shí)進(jìn)行調(diào)試,請(qǐng)返回到存儲(chǔ)庫(kù)中的Actions選項(xiàng)卡。一旦你創(chuàng)建了一個(gè)動(dòng)作,該頁(yè)面將看起來(lái)像這樣:
圖片
除了在Actions選項(xiàng)卡中輸出您的工作流之外,不要忘記轉(zhuǎn)到Docker Hub并在那里查看您的圖像!