国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

通過多階段構建減小Golang鏡像的大小

開發 前端
多階段構建允許多個不同的構建過程,這些構建可以完全從不同的基礎鏡像構建,選擇性地將文件從一個階段傳遞到下一個階段,從而剝離最終鏡像中所有不必要的文件。例如,我們可以將前一個階段稱為BUILD,然后引入第二個階段,我們稱之為BINARIES,該階段使用alpine:latest作為基礎鏡像,并從BUILD階段復制我們構建的應用程序的二進制文件。

我們如何通過引入具有多階段構建過程的Dockerfiles來減小Golang鏡像的大小?

讓我們從一個通用的Dockerfile開始,它負責處理基本的事務,如依賴項、構建二進制文件、暴露必要的端口等,以便為Go中的一個非常基礎的REST API提供服務。

FROM golang:1.16-alpine
ENV GO111MODULE=on
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
ENV HTTP_PORT=8080
EXPOSE 8080
ENTRYPOINT ["/app/reduce-docker-size"]

那將無縫地構建您項目的二進制文件,并創建Docker鏡像。

這樣做真的足夠好嗎? 我會說不,因為生成的鏡像大小超過300MB(確切地說是322MB),因為它包含了所有的Golang工具,這對我們來說是不必要的,因為我們指示編譯器禁用cgo(CGO_ENABLED=0)并靜態鏈接任何將為我們提供自包含可執行文件的C綁定(其大小僅為6.05MB!),無需任何外部框架或運行時依賴。

圖片圖片

CGO_ENABLED=0 是至關重要的,如果我們不構建自包含的可執行文件,多階段構建過程將無法工作。

我們可以做得更好的是,采用所謂的多階段構建。多階段構建允許多個不同的構建過程,這些構建可以完全從不同的基礎鏡像構建,選擇性地將文件從一個階段傳遞到下一個階段,從而剝離最終鏡像中所有不必要的文件。例如,我們可以將前一個階段稱為BUILD,然后引入第二個階段,我們稱之為BINARIES,該階段使用alpine:latest作為基礎鏡像,并從BUILD階段復制我們構建的應用程序的二進制文件。

# BUILD
FROM golang:1.16-alpine as BUILD
ENV GO111MODULE=on
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
ENV HTTP_PORT=8080
EXPOSE 8080
# BINARIES
FROM alpine:latest
COPY --from=BUILD /app/reduce-docker-size /app/reduce-docker-size
ENTRYPOINT ["/app/reduce-docker-size"]

由于不再需要,配備了golang工具包的 已被清理。現在鏡像大小已降至11.7MB。

圖片圖片

這個好到足夠了嗎? 我會說是的,但是為了實驗的緣故,我們還是盡量挑戰一下極限。我們繼續沿著多階段構建的道路前進,但這次在我們的第二階段,我們將不再使用alpine:latest,而是轉向一個非常特殊的名為scratch的鏡像,這是一個完全空白的鏡像,實際上什么都沒有。

# BUILD
FROM golang:1.16-alpine as BUILD
ENV GO111MODULE=on
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
ENV HTTP_PORT=8080
EXPOSE 8080
# MINIATURE
FROM scratch
COPY --from=BUILD /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=BUILD /app/reduce-docker-size /app/reduce-docker-size
ENTRYPOINT ["/app/reduce-docker-size"]

新創建的鏡像現在已經降至6.34MB!

圖片圖片

因為我們預先告知的scratch鏡像實際上是空的,所以找不到任何根SSL證書。以下指令將在最終鏡像中復制證書,絕對不應被省略:

COPY — from=BUILD /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

請問使用scratch作為最終階段的基礎鏡像值得嗎?我會說既值得又不值得。如果你排除一些特殊情況——那些在alpine:latest和scratch構建的最終鏡像之間的5.36MB差異可能會產生巨大的影響——在其余的情況下,你最終會在生產中得到一個完全沒有任何工具的容器,我完全不推薦這樣做。這些特殊情況很少見,所以在為了僅僅5.36M。


責任編輯:武曉燕 來源: 云原生運維圈
相關推薦

2023-07-03 08:52:31

容器Golang

2017-11-13 17:17:11

Docker鏡像Go

2025-10-21 12:40:05

2023-02-08 13:08:31

2025-03-20 10:07:55

2017-11-21 14:34:30

2023-04-09 16:31:30

Phaser工具Java

2022-11-03 10:28:43

Docker

2025-08-18 07:39:13

2020-03-30 21:32:50

物聯網IOT多階段驗證

2024-10-24 23:49:42

2023-12-04 16:18:30

2023-12-29 07:04:28

Go項目Docker編寫

2025-07-31 05:15:00

RAG幻覺VLMs

2025-03-26 02:00:00

C#Docker開發

2025-09-04 07:45:33

2019-06-05 10:27:26

UCloud徐亮

2025-02-06 08:37:38

點贊
收藏

51CTO技術棧公眾號

www国产精品com| 国产精品免费久久久| 亚洲精品在线观看网站| 人操人视频在线观看| 免费在线观看成人| 伊人情人网综合| 激情综合五月婷婷| 亚洲在线第一页| 亚洲免费精品| 五月天亚洲综合| 99久久免费精品高清特色大片| avove在线观看| 麻豆九一精品爱看视频在线观看免费| 久久本道综合色狠狠五月| 日韩一中文字幕| 一本色道久久加勒比88综合| 欧美激情一区| 国产一区二三区| 一区二区三区视频免费在线观看| 宅男噜噜噜66国产免费观看| 日韩福利视频一区| 国产欧美综合在线| y97精品国产97久久久久久| 亚洲v欧美v另类v综合v日韩v| 中文字幕在线播放| 国产一区二区美女诱惑| 日本电影亚洲天堂一区| 日韩中文字幕av在线| 成人av观看| 不卡的看片网站| 日韩精品在线播放| 日本精品免费在线观看| 99久久99久久精品国产片果冰| 日韩最新在线视频| 天天射—综合中文网| 人人妻人人澡人人爽欧美一区| 午夜精品久久一牛影视| 极品国产人妖chinesets亚洲人妖| 亚洲人成网7777777国产| 视频国产一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美乱妇40p| 九一国产精品| 精品一卡二卡三卡四卡日本乱码 | 成人免费在线视频播放| 99久久夜色精品国产网站| 日韩av卡一卡二| 在线视频欧美区| 中文字幕在线高清| 91精品国产高清久久久久久久久| 欧美日韩一区二区国产| 这里只有精品66| 国产精品乱子久久久久| 三级在线电影| 亚洲色图在线观看| 成人黄色av| 美女在线免费视频| 一区二区三区精品视频在线| 欧美xxxx免费虐| 91福利视频网| 国内精品美女在线观看| 欧美亚洲黄色片| 粉嫩老牛aⅴ一区二区三区 | 欧美精品色综合| av在线日韩| 亚洲淫片在线视频| 国产福利精品一区| 黄色网址在线播放| 中文字幕日韩欧美在线视频| 欧美freesextv| 被灌满精子的波多野结衣| 狠狠色狠狠色综合日日小说| 成人亚洲网站| 国产伦精品一区二区三区| 国产精品丝袜在线| 欧美aaaxxxx做受视频| 久久视频中文字幕| 久久精品人人| 在线看三级网站视频| 中文在线资源观看视频网站免费不卡| 亚洲欧美在线专区| 天天噜天天色| 日韩av片电影专区| 国产精品久久久久毛片软件| 亚洲国产aⅴ精品一区二区| 日本免费不卡一区二区| 日韩视频一区在线| 成人性生交大合| 456成人影院在线观看| 日韩激情视频一区二区| 亚洲天堂免费在线| 成人综合激情网| 二区三区精品| www.99在线| 久久久亚洲成人| 最新热久久免费视频| 久9久9色综合| 羞羞视频在线免费看| 电影午夜精品一区二区三区| 欧美色爱综合网| 视频一区二区三区中文字幕| 国产深夜视频在线观看| 异国色恋浪漫潭| 色偷偷av一区二区三区乱| 97精品超碰一区二区三区| 日本精品在线观看| 欧美伦理片在线看| 久久久亚洲成人| 亚洲成人av一区二区| 欧美 日韩 国产 一区| 精品176二区| 300部国产真实乱| 欧美高清自拍一区| 亚洲在线成人精品| 精品1区2区3区4区| 大菠萝精品导航| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美激情三级免费| 午夜精品久久久久久久99水蜜桃 | 天天综合网久久| 欧美一性一乱一交一视频| 一区二区三区加勒比av| 欧美日韩少妇| 国产精选在线| 国产精品久久久久9999小说| 国产成人综合精品在线| 欧美中文字幕不卡| 国内不卡的二区三区中文字幕 | 中文字幕中文字幕在线一区 | 国产日韩在线看片| 欧美日韩成人高清| 国产精品一品视频| 日韩理论电影中文字幕| 国产黄色片在线播放| 樱空桃在线播放| 欧美精品久久久久久久久久| 午夜精彩视频在线观看不卡| 日韩不卡手机在线v区| 欧美激情三级| 九色视频网站在线观看| 国产女人18毛片| 国产精品第1页| 亚洲国产精品va在线观看黑人| 国产欧美一区二区精品久导航| 久久久久亚洲| 色老太综合网| 在线视频你懂| 国产一级片91| 国产精品专区第二| 日韩国产激情在线| 一区二区三区蜜桃| 精品一区二区三区免费播放| 都市激情亚洲欧美| www视频在线看| 日韩精品视频一二三| 日本精品二区| 国产精品福利片| 一区二区三区精品99久久 | av在线app| 黄色无遮挡网站| 亚洲精品成人久久久998| 欧美专区国产专区| 亚洲人免费视频| 欧洲激情一区二区| 中文字幕电影一区| 六月丁香婷婷色狠狠久久| 波多野结衣在线播放一区| 日本一道高清亚洲日美韩| 噜噜噜噜噜在线视频| 久久婷婷五月综合色国产香蕉| 精品一区久久久久久| 91成人性视频| 最近2019中文字幕一页二页| 欧美日韩色综合| 伊人性伊人情综合网| 成人久久18免费网站麻豆 | 8x8x华人在线| 国产传媒一区| 日本久久久久久久久久久| 国产一区二区三区18| 日韩欧美a级成人黄色| 久久99热精品这里久久精品| 在线播放日韩精品| 最近中文字幕2019免费| 久久久999国产| 国产偷国产偷亚洲清高网站| 亚洲国产精品视频| 欧美三片在线视频观看| 亚洲欧美另类小说视频| 日本少妇精品亚洲第一区| 日本电影全部在线观看网站视频| 少妇一级淫免费放| 一区二区精品在线观看| 亚洲www永久成人夜色| 国内精品久久影院| 日韩网站免费观看高清| 日韩二区三区在线| 日韩午夜精品视频| 欧美日韩激情在线| 91九色02白丝porn|