欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker中多階段構(gòu)建與單階段構(gòu)建的具體使用

 更新時(shí)間:2025年09月30日 10:09:50   作者:{?■_■}  
本文主要介紹了docker中多階段構(gòu)建與單階段構(gòu)建的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

單階段構(gòu)建(Single-Stage Build)

在單階段構(gòu)建中,所有構(gòu)建過程都在一個(gè)鏡像中完成。構(gòu)建工具和最終的運(yùn)行時(shí)環(huán)境都包含在同一個(gè)鏡像中,導(dǎo)致最終鏡像的體積較大。

單階段構(gòu)建 Dockerfile 示例:

FROM golang:1.18
WORKDIR /app
COPY ./helloworld /app/
// 設(shè)置 Go 代理環(huán)境變量
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct  // 使用中國(guó)的 Go 代理,確保更快速的包下載
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .
EXPOSE 80
CMD ["./app", "--param1=p1", "--param2=p2"]

優(yōu)缺點(diǎn):

  • 優(yōu)點(diǎn):
    • 構(gòu)建過程簡(jiǎn)單,只有一個(gè)階段。
  • 缺點(diǎn):
    • 最終鏡像包含構(gòu)建工具(如 go 工具鏈),使鏡像體積較大。
    • 不適合生產(chǎn)環(huán)境,因?yàn)殓R像中包含了構(gòu)建相關(guān)的工具和源代碼,可能帶來安全問題。
    • 運(yùn)行時(shí)環(huán)境包含不必要的構(gòu)建工具和依賴,增加了攻擊面和容器的啟動(dòng)時(shí)間。

多階段構(gòu)建(Multi-Stage Build)

在多階段構(gòu)建中,構(gòu)建過程被分成多個(gè)階段。每個(gè)階段可以使用不同的基礎(chǔ)鏡像,最終鏡像只包含必要的運(yùn)行時(shí)環(huán)境和構(gòu)建完成的二進(jìn)制文件。
這種方法的好處是可以顯著減小最終鏡像的體積,同時(shí)避免將不必要的構(gòu)建工具和依賴包含在生產(chǎn)環(huán)境的鏡像中。

多階段構(gòu)建 Dockerfile 示例:

# 第一階段:構(gòu)建 Go 應(yīng)用
FROM golang:1.18 AS builder
WORKDIR /go/src/helloworld
COPY ./helloworld /go/src/helloworld
// 設(shè)置 Go 代理環(huán)境變量
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct  // 使用中國(guó)的 Go 代理,確保更快速的包下載
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .

# 第二階段:運(yùn)行 Go 應(yīng)用
FROM alpine:latest
WORKDIR /app
COPY --from=builder /go/src/helloworld/app /app/
EXPOSE 80
CMD ["./app", "--param1=p1", "--param2=p2"]

優(yōu)缺點(diǎn):

  • 優(yōu)點(diǎn):
    • 可以有效減少最終鏡像的體積,只包含運(yùn)行時(shí)環(huán)境和必要的二進(jìn)制文件。
    • 可以選擇不同的鏡像來進(jìn)行不同的構(gòu)建步驟,例如使用 golang 鏡像構(gòu)建代碼,使用更小的 alpine 鏡像運(yùn)行應(yīng)用。
    • 避免了構(gòu)建工具和源代碼暴露在最終鏡像中,提高了安全性。
  • 缺點(diǎn):
    • Dockerfile 更復(fù)雜,因?yàn)樾枰獮椴煌碾A段指定不同的鏡像。
    • 構(gòu)建過程較為冗長(zhǎng),需要多個(gè)階段來完成構(gòu)建和運(yùn)行,可能稍微增加構(gòu)建時(shí)間。

對(duì)比總結(jié)

  • 單階段構(gòu)建:構(gòu)建和運(yùn)行都在同一個(gè)鏡像中完成,最終鏡像較大,包含了構(gòu)建工具和源代碼。

    • 適合小型項(xiàng)目或快速開發(fā),但不適合生產(chǎn)環(huán)境。
    • 鏡像較大,不適合持續(xù)交付或生產(chǎn)環(huán)境部署。
  • 多階段構(gòu)建:將構(gòu)建過程分為多個(gè)階段,最終鏡像只包含需要的運(yùn)行時(shí)環(huán)境和構(gòu)建完成的二進(jìn)制文件。

    • 適合生產(chǎn)環(huán)境,能夠減小鏡像體積,避免不必要的構(gòu)建工具暴露在鏡像中。
    • 更適合復(fù)雜項(xiàng)目或?qū)︾R像大小、安全性有較高要求的場(chǎng)景。

到此這篇關(guān)于docker中多階段構(gòu)建與單階段構(gòu)建的具體使用的文章就介紹到這了,更多相關(guān)docker 多階段構(gòu)建與單階段構(gòu)建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker打包python鏡像的全教程分享

    docker打包python鏡像的全教程分享

    Docker是一種開源的容器化平臺(tái),可以讓開發(fā)者將應(yīng)用程序和其依賴項(xiàng)打包到一個(gè)可移植的容器中,然后在不同的環(huán)境中運(yùn)行,本文主要給大家介紹了docker打包python鏡像全教程,需要的朋友可以參考下
    2024-02-02
  • 解決Docker Image鏡像無法刪除問題的方法

    解決Docker Image鏡像無法刪除問題的方法

    這篇文章主要給大家介紹了關(guān)于如何解決Docker Image鏡像無法刪除問題的方法,文中通過示例代碼將解決的方法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Docker實(shí)現(xiàn)容器之間通信的多種方式

    Docker實(shí)現(xiàn)容器之間通信的多種方式

    在 Docker 中,實(shí)現(xiàn)容器之間的通信有多種方式,核心在于網(wǎng)絡(luò)配置,下面我從 基礎(chǔ)原理、常見方式、最佳實(shí)踐、以及 docker-compose 方式 全面講解,需要的朋友可以參考下
    2025-06-06
  • 使用Docker快速運(yùn)行Firefox并實(shí)現(xiàn)遠(yuǎn)程訪問本地火狐瀏覽器的詳細(xì)過程

    使用Docker快速運(yùn)行Firefox并實(shí)現(xiàn)遠(yuǎn)程訪問本地火狐瀏覽器的詳細(xì)過程

    文章介紹了如何在Docker中運(yùn)行Firefox瀏覽器,并通過Cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問,步驟包括部署Firefox、本地訪問、安裝Cpolar、配置公網(wǎng)地址、設(shè)置固定二級(jí)子域名等,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-02-02
  • docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解

    docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解

    這篇文章主要介紹了 docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Docker 的健康檢測(cè)機(jī)制

    Docker 的健康檢測(cè)機(jī)制

    這篇文章主要介紹了Docker 的健康檢測(cè)機(jī)制。即檢驗(yàn)進(jìn)程是否存活,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案

    Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案

    這篇文章主要介紹了Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案,重點(diǎn)給大家介紹如何把shell/sql腳本放入/docker-entrypoint-initdb.d/目錄中,讓容器啟動(dòng)的時(shí)候自動(dòng)執(zhí)行創(chuàng)建
    2021-06-06
  • 詳解使用Docker容器來源碼編譯etcd

    詳解使用Docker容器來源碼編譯etcd

    這篇文章主要介紹了詳解使用Docker容器來源碼編譯etcd,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 教你使用如何docker部署淘寶rap2服務(wù)

    教你使用如何docker部署淘寶rap2服務(wù)

    這篇文章主要介紹了教你使用如何docker部署淘寶rap2服務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • docker?環(huán)境搭建、docker?與容器常用指令大全(推薦)

    docker?環(huán)境搭建、docker?與容器常用指令大全(推薦)

    這篇文章主要介紹了docker?環(huán)境搭建、docker?與容器常用指令大全,主要包括docker容器操作命令匯總,文中介紹需要注意的是如果想要?jiǎng)h除一個(gè)容器,需要先停止該容器且如果鏡像中有運(yùn)行狀態(tài)的容器,也是無法刪除容器的,需要的朋友可以參考下
    2022-06-06

最新評(píng)論