0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

docker通過中間鏡像加速部署

馬哥Linux運(yùn)維 ? 來源:博客園wang_yb ? 2025-01-06 12:39 ? 次閱讀

概要

使用 docker 打包鏡像的時(shí)候, 每次耗費(fèi)時(shí)間最多的就是docker build的過程. 特別是對(duì)于前端工程的打包, 有時(shí)候下載依賴包的時(shí)間就要 10 幾分鐘, 這就導(dǎo)致發(fā)布版本的效率極低.

針對(duì)前端工程的打包慢的問題, 目前能想到的有效解決辦法就是, 在官方 node 的鏡像基礎(chǔ)上, 把當(dāng)前項(xiàng)目用到的 packages 下載好再做個(gè)鏡像用于編譯前端工程用.

實(shí)施

根據(jù)上面的方案, 嘗試如下.

修改前的實(shí)施時(shí)間

修改前, 是在 node 鏡像中編譯前端, 然后將編譯之后的代碼放入后端的靜態(tài)文件目錄中.

FROM node:10.15-alpine as front-builder

WORKDIR /user
ADD ./frontend/application .
RUN yarn                        #  這一步耗費(fèi)的時(shí)間最長
RUN yarn build


FROM golang:1.12.5-alpine3.9 as back-builder

WORKDIR /go
RUN mkdir -p ./src/xxx
ADD ./backend/src/xxx ./src/xxx
RUN go install xxx


FROM golang:1.12.5-alpine3.9

WORKDIR /app
COPY --from=front-builder /user/build ./public
COPY --from=back-builder /go/bin/xxx .

CMD ["./xxx"]

這種方式的編譯時(shí)間如下:

real    14m27.639s
user    0m0.812s
sys     0m0.108s

制作編譯用的鏡像

前端編譯用的鏡像 Dockerfile 如下:

FROM node:10.15-alpine

WORKDIR /user
ADD ./frontend/application .
RUN yarn
RUN rm -rf `grep -v "node_modules" | grep -v "yarn.lock"`

docker build 命令: ( 目錄結(jié)構(gòu)根據(jù)具體的項(xiàng)目調(diào)整 )

# 這里的 Dockerfile 就是上面的內(nèi)容, 編譯后會(huì)生成名稱為 node-application-cache 的 image
docker build -f ./Dockerfile -t node-application-cache .

測試修改后的實(shí)施時(shí)間

dockerfile 和修改前的基本一樣, 只改了第一行

# FROM node:10.15-alpine as front-builder
FROM node-application-cache:latest as front-builder

編譯時(shí)間如下:

real    1m17.399s
user    0m0.836s
sys     0m0.136s

使用了帶前端緩存的 image, 整體時(shí)間縮短了 14 倍左右 中途編譯用的鏡像(node-application-cache)比之前的(node:10.15-alpine)大很多, 但是最終發(fā)布的鏡像還是一樣大.

鏈接:https://www.cnblogs.com/wang_yb/p/11013550.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    687

    瀏覽量

    22053
  • 鏡像
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

    10769
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    477

    瀏覽量

    11871

原文標(biāo)題:實(shí)施

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    vuejs部署 、測試鏡像編譯生成過程分析

    Docker : vuejs部署 、測試鏡像編譯生成
    發(fā)表于 07-16 17:04

    怎么構(gòu)建docker鏡像倉庫軟件

    Docker Registry】用docker registry 鏡像搭建私有測試倉庫
    發(fā)表于 08-13 11:03

    構(gòu)建ARM64版本nacos docker鏡像

    在適配過程中有大量合作伙伴用到nacos且采用容器化部署,dockerhub未提供官方鏡像,因此需要在鯤鵬服務(wù)器自定義構(gòu)建。構(gòu)建前提:Docker部署構(gòu)建步驟:1、下載包含構(gòu)建所需的
    發(fā)表于 06-16 14:29

    如何在RDKx3部署docker鏡像?

    一種在RDKx3部署docker鏡像跑tros歷程的方法 為了保持主系統(tǒng)環(huán)境干凈整潔,有在docker部署代碼的習(xí)慣。
    發(fā)表于 08-02 11:02

    淺析Docker鏡像本地存儲(chǔ)機(jī)制及容器啟動(dòng)原理

    Docker 鏡像不是一個(gè)單一的文件,而是有多層構(gòu)成。我們可通過 docker images 獲取本地的鏡像列表及對(duì)應(yīng)的元信息, 接著可
    發(fā)表于 10-19 14:17 ?2533次閱讀

    Docker—簡介與鏡像用法

    阿里云官方鏡像站: ??https://developer.aliyun.com/mirror/?utm_content=g_1000303593?? ? 一、容器簡介 Docker是管理容器的引擎
    發(fā)表于 11-25 16:28 ?522次閱讀
    <b class='flag-5'>Docker</b>—簡介與<b class='flag-5'>鏡像</b>用法

    go項(xiàng)目怎么讓docker鏡像體積減小

    【導(dǎo)讀】go 項(xiàng)目怎么讓 docker 鏡像體積減?。勘疚淖隽嗽敿?xì)介紹。
    的頭像 發(fā)表于 06-12 15:07 ?1429次閱讀

    go項(xiàng)目怎么讓docker鏡像體積減小

    go 項(xiàng)目怎么讓 docker 鏡像體積減???本文做了詳細(xì)介紹。
    的頭像 發(fā)表于 06-23 10:49 ?1200次閱讀

    Docker鏡像的詳細(xì)講解

    本文是對(duì) Docker 鏡像的詳細(xì)講解,講解了如何安裝 Docker、配置 Docker 鏡像加速
    的頭像 發(fā)表于 08-02 10:00 ?2197次閱讀

    減少docker鏡像大小的方法

    Docker 是一種容器引擎,可以在容器內(nèi)運(yùn)行一段代碼。Docker 鏡像是在任何地方運(yùn)行您的應(yīng)用程序而無需擔(dān)心應(yīng)用程序依賴性的方式。
    的頭像 發(fā)表于 05-15 11:13 ?949次閱讀
    減少<b class='flag-5'>docker</b><b class='flag-5'>鏡像</b>大小的方法

    docker 搜索鏡像,docker查看鏡像詳細(xì)信息(docker下載鏡像命令)

    Docker Hub是集中管理的Docker鏡像注冊(cè)中心。通過Docker 用戶可以在注冊(cè)中心搜索、下載和使用CLI命令行工具中的
    的頭像 發(fā)表于 07-19 09:46 ?1879次閱讀

    Docker鏡像國內(nèi)加速的幾種方法

    在國內(nèi),拉取 Docker 鏡像速度慢/時(shí)不時(shí)斷線/無賬號(hào)導(dǎo)致限流等,比較痛苦. 這里提供加速/優(yōu)化的幾種方法。
    的頭像 發(fā)表于 10-19 10:02 ?1.1w次閱讀
    <b class='flag-5'>Docker</b><b class='flag-5'>鏡像</b>國內(nèi)<b class='flag-5'>加速</b>的幾種方法

    如何在Windows系統(tǒng)上設(shè)置Docker鏡像

    在使用 Docker 進(jìn)行鏡像下載和構(gòu)建時(shí),由于眾所周知的原因,國內(nèi)用戶可能會(huì)遇到下載速度慢或者無法連接的問題。為了解決這個(gè)問題,我們可以使用國內(nèi)的鏡像源來加速下載速度。本文將介紹如何
    的頭像 發(fā)表于 10-24 16:55 ?6028次閱讀

    手動(dòng)構(gòu)建Docker鏡像的方法

    不推薦使用docker commit命令,而應(yīng)該使用更靈活、更強(qiáng)大的dockerfile來構(gòu)建docker鏡像。
    的頭像 發(fā)表于 08-05 15:30 ?543次閱讀
    手動(dòng)構(gòu)建<b class='flag-5'>Docker</b><b class='flag-5'>鏡像</b>的方法

    Dockerfile鏡像制作與Docker-Compose容器編排

    Dockerfile鏡像制作 docker/podman中, 鏡像是容器的基礎(chǔ),每次執(zhí)行docker run的時(shí)候都會(huì)指定哪個(gè)基本鏡像作為容
    的頭像 發(fā)表于 01-07 11:01 ?47次閱讀
    Dockerfile<b class='flag-5'>鏡像</b>制作與<b class='flag-5'>Docker</b>-Compose容器編排