2023-07-03 09:16:41來源:今日頭條
(資料圖片僅供參考)
大家都知道Golang是編譯型語言,源碼需要先編譯再運(yùn)行,編譯過程中需要下載依賴包,最終編譯成可執(zhí)行的二進(jìn)制文件,只需要部署這個(gè)二進(jìn)制文件即可運(yùn)行。
現(xiàn)在基本都是采用容器化部署方式,打包出的鏡像體積越小越好,和程序運(yùn)行無關(guān)的東西越少越好。所以打包Golang程序Docker鏡像時(shí),最好的做法是只將編譯好的Golang程序二進(jìn)制文件打包進(jìn)鏡像即可。
如果要做到這一點(diǎn)的話,就需要使用多階段構(gòu)建Docker鏡像方法了。首先基于一個(gè)有Golang編譯環(huán)境的基礎(chǔ)鏡像編譯出Golang程序的二進(jìn)制文件,然后將二進(jìn)制文件打包到用于運(yùn)行環(huán)境的基礎(chǔ)鏡像中。
代碼示例FROM golang:1.19 AS builderWORKDIR /projectADD . .RUN go build main.goFROM debian:stable-slim WORKDIR /appCOPY --from=builder /project/main .CMD ["./app/main"]
語法非常簡單,需要注意兩個(gè)點(diǎn):
From,開啟一個(gè)新的build階段,可以使用as為當(dāng)前stage指定一個(gè)名字,如果沒有指定名字的話默認(rèn)從0開始;Copy,默認(rèn)從本地目錄復(fù)制文件或文件夾到docker image,如果有--from,則會(huì)從指定的docker stage或其他docker image中復(fù)制,例如--from=builder、--from==0(沒有使用as為當(dāng)前stage命名的情況下默認(rèn)為0)。小結(jié)多階段構(gòu)建Docker鏡像有如下幾點(diǎn)好處:
減小鏡像體積:多階段構(gòu)建可以在一個(gè)Dockerfile文件中使用多個(gè)FROM指令從不同的鏡像中構(gòu)建不同階段的鏡像,在最后一階段中只保留應(yīng)用程序所需的文件和運(yùn)行時(shí)環(huán)境,減小了鏡像的大小。提高構(gòu)建效率:在多階段構(gòu)建中,因?yàn)橹恍枰谧詈笠浑A段中打包需要的文件,從而避免了在構(gòu)建過程中不必要的文件和依賴項(xiàng),并且避免了為每個(gè)構(gòu)建層創(chuàng)建新的容器。更易維護(hù):多階段構(gòu)建可以將不同的構(gòu)建階段獨(dú)立出來,從而簡化了維護(hù)過程。如果需要更改其中一個(gè)階段,那么只需要改變該階段的Dockerfile文件即可。更安全:多階段構(gòu)建可以避免同時(shí)在一個(gè)容器中安裝和運(yùn)行多個(gè)不同的應(yīng)用程序和軟件工具所帶來的潛在安全風(fēng)險(xiǎn)。關(guān)鍵詞:
為什么要多階段構(gòu)建大家都知道Golang是編譯型語言,源碼需要先編譯再運(yùn)
一、類和對象1、什么是類和對象面向?qū)ο缶幊淌且环N編程范式,它將程序
之前在這篇文章(CSS實(shí)現(xiàn)樹狀結(jié)構(gòu)目錄[1])中實(shí)現(xiàn)了一個(gè)樹狀結(jié)構(gòu),效果
需求集中釋放后,市場掉頭向下。
家長在為孩子選擇國際學(xué)校綜合考慮的因素很多,比如學(xué)費(fèi)、課程體系、師
陵川補(bǔ)齊農(nóng)村黨建“短板”助推鄉(xiāng)村振興,主流媒體,山西門戶。山西新聞網(wǎng)
7月3日,信音電子(301329 SZ)開啟申購,發(fā)行價(jià)格為21 00元 股,申購上
新華社羅馬7月2日電(國際觀察)全球糧農(nóng)事業(yè)發(fā)展的中國貢獻(xiàn)新華社記者
火箭在幾天前還在追求天賦,在幾天后立刻放棄了天賦?,老鷹,天賦,火箭
1、手上起小紅疙瘩很癢,有以下幾種可能:1??赡苁墙戬彛饕山戬徃?/p>
證券時(shí)報(bào)網(wǎng)訊,7月2日,永泰能源(600157)發(fā)布公告,公司核心管理人員將
本周觀點(diǎn):本周酒鬼酒、古井貢酒、瀘州老窖召開2022年度股東大會(huì),整體
證券時(shí)報(bào)e公司訊,近日,萬興科技(300624)旗下億圖腦圖正式上線AI繪畫
1、北京花鮮素國際貿(mào)易有限公司成立于2014年,公司致力于鮮花提純飲品
7月2日珠海冠宇發(fā)布公告《珠海冠宇關(guān)于股東權(quán)益變動(dòng)的提示性公告》其股