最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker鏡像瘦身大小從1.43 GB減少到22.4MB

 更新時(shí)間:2023年06月13日 15:38:38   作者:沃趣數(shù)據(jù)庫管理平臺  
本文主要介紹了 Docker鏡像瘦身大小從1.43 GB減少到22.4MB,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

 如果你正在從事 Web 開發(fā),那么你可能已經(jīng)了解過容器化的概念以及它的優(yōu)點(diǎn)。

但是,當(dāng)使用 Docker 時(shí),鏡像大小是一個(gè)很大的問題。僅僅是從 create-react-app 中得到的樣板項(xiàng)目就通常超過 1.43 GB。

今天我們將會(huì)容器化一個(gè) ReactJS 應(yīng)用程序,并學(xué)習(xí)一些關(guān)于如何減小鏡像大小以及同時(shí)提高性能的技巧。

這些技巧將會(huì)展示給 ReactJS,但它同樣適用于任何 NodeJS 應(yīng)用程序。

步驟1:創(chuàng)建您的項(xiàng)目

把你的終端打開,輸入以下命令:

npx create-react-app docker-image-test

然后create-react-app將為您提供基本的 React 應(yīng)用程序。

之后,進(jìn)入根目錄并運(yùn)行項(xiàng)目。

cd docker-image-testyarn installyarn start

然后轉(zhuǎn)到http://localhost:3000查看您的應(yīng)用程序是否已啟動(dòng)并正在運(yùn)行。

步驟2:構(gòu)建您的第一個(gè)圖像

在項(xiàng)目的根目錄中,創(chuàng)建一個(gè)名為Dockerfile的文件并將以下代碼粘貼到其中。

FROM node:12
WORKDIR /app
COPY package.json ./
RUN yarn install
COPY . .
EXPOSE 3000
CMD ["yarn", "start"]

請注意,我們正在從 docker hub 獲取基本映像 node:12,安裝依賴項(xiàng)并運(yùn)行基本命令。(這里不深入docker命令的細(xì)節(jié))

現(xiàn)在從您的終端,為您的容器構(gòu)建圖像。

docker build -t docker-image-test .

Docker 將構(gòu)建您的映像。完成后,您可以使用此命令查看您的圖像。

docker images

列表頂部是我們新創(chuàng)建的圖像,在最右側(cè),我們可以看到圖像的大小?,F(xiàn)在是1.43GB 。

我們可以使用以下命令運(yùn)行圖像

docker run --rm -it -p 3000:3000/tcp docker-image-test:latest

您可以轉(zhuǎn)到瀏覽器并刷新頁面以驗(yàn)證它是否仍在運(yùn)行。

步驟3:更改基礎(chǔ)圖像

在之前的配置中,我們使用node:12作為基礎(chǔ)鏡像。但傳統(tǒng)上,節(jié)點(diǎn)圖像是基于Ubuntu的,這對于我們簡單的React應(yīng)用程序來說是不必要的沉重。

從 DockerHub(官方 docker image registry)可以看出,基于 Alpine 的鏡像比基于 Ubuntu 的鏡像要小得多,而且它們只打包了最小的依賴。

這些基本圖像的大小比較如下所示。

 現(xiàn)在我們將使用node:12-alpine作為我們的基礎(chǔ)鏡像,看看會(huì)發(fā)生什么。

FROM node:12-alpine
WORKDIR /app
COPY package.json ./
RUN yarn install
COPY . .
EXPOSE 3000
CMD ["yarn", "start"]

然后我們像以前一樣構(gòu)建圖像并查看大小。

 哇!我們的圖像大小只減少到580MB。這是一個(gè)很大的進(jìn)步。但我們能做得更好嗎?

步驟4:多階段構(gòu)建

在我們之前的配置中,我們將所有源代碼復(fù)制到工作目錄中。

但這是不必要的,因?yàn)槲覀冎恍枰獦?gòu)建文件夾來為我們的網(wǎng)站提供服務(wù)。所以現(xiàn)在,我們將使用多階段構(gòu)建的概念來減少最終圖像中不必要的代碼和依賴項(xiàng)。

配置看起來像這樣。

# STAGE 1
FROM node:12-alpine AS build
WORKDIR /app
COPY package.json ./
RUN yarn  install
COPY . /app
RUN yarn build
# STAGE 2
FROM node:12-alpine
WORKDIR /app
RUN npm install -g webserver.local
COPY --from=build /app/build ./build
EXPOSE 3000
CMD webserver.local -d ./build

在第一階段,我們安裝依賴項(xiàng)并構(gòu)建我們的項(xiàng)目。

在第二階段,我們從上一階段復(fù)制構(gòu)建文件夾的內(nèi)容,并使用它來為我們的應(yīng)用程序提供服務(wù)。

這樣,我們的最終圖像中就沒有不必要的依賴項(xiàng)和代碼。

接下來,我們構(gòu)建圖像并像以前一樣從列表中查看圖像。

 現(xiàn)在我們的圖像大小只有97.5MB。那有多棒?

步驟5:使用 NGINX

我們正在使用節(jié)點(diǎn)服務(wù)器來提供ReactJS應(yīng)用程序的靜態(tài)資產(chǎn),這不是提供靜態(tài)內(nèi)容的最佳選擇。

我們可以使用更高效、更輕量級的服務(wù)器,如Nginx來服務(wù)我們的應(yīng)用程序,看看它是否提高了我們的性能并減小了大小。

我們最終的 Docker 配置文件將如下所示。

# STAGE 1
FROM node:12-alpine AS build
WORKDIR /app
COPY package.json ./
RUN yarn  install
COPY . /app
RUN yarn build
# STAGE 2
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

我們正在更改 docker 配置的第二階段,以使用 Nginx 為我們的應(yīng)用程序提供服務(wù)。

然后我們使用當(dāng)前配置構(gòu)建我們的鏡像。

 圖像大小僅減少到22.4MB!

同時(shí),我們正在使用性能更高的服務(wù)器來為我們出色的應(yīng)用程序提供服務(wù)。

我們可以使用以下命令驗(yàn)證我們的應(yīng)用程序是否仍在運(yùn)行。

docker run --rm -it -p 3000:80/tcp docker-image-test:latest

請注意,我們將容器的 80 端口暴露給外部,因?yàn)槟J(rèn)情況下,Nginx將在容器內(nèi)的端口 80 上可用。

這些是您可以應(yīng)用于任何NodeJS項(xiàng)目的一些簡單技巧,可以大幅減小圖像大小?,F(xiàn)在您的容器確實(shí)更加便攜和高效。

到此這篇關(guān)于 Docker鏡像瘦身大小從1.43 GB減少到22.4MB的文章就介紹到這了,更多相關(guān) Docker鏡像瘦身內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker限制容器的內(nèi)存使用大小的實(shí)戰(zhàn)指南

    Docker限制容器的內(nèi)存使用大小的實(shí)戰(zhàn)指南

    在使用 Docker 部署服務(wù)時(shí),如果不加限制,某個(gè)容器可能因?yàn)閮?nèi)存泄漏或負(fù)載過高,導(dǎo)致主機(jī)內(nèi)存被耗盡,拖垮其他容器甚至整個(gè)系統(tǒng),所以本文給大家介紹了Docker如何限制容器的內(nèi)存使用大小,需要的朋友可以參考下
    2026-02-02
  • Docker部署Nginx 及Nginx的基本使用最佳實(shí)踐

    Docker部署Nginx 及Nginx的基本使用最佳實(shí)踐

    Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,廣泛應(yīng)用于Web服務(wù)、負(fù)載均衡和靜態(tài)資源托管等領(lǐng)域,這篇文章主要介紹了Docker部署Nginx 以及Nginx的基本使用,需要的朋友可以參考下
    2025-04-04
  • docker-compose部署MySQL適用于所有版本

    docker-compose部署MySQL適用于所有版本

    本文主要介紹了docker-compose部署MySQL,需要準(zhǔn)備一個(gè)docker-compose.yml文件,通過運(yùn)行docker-compose up命令啟動(dòng)容器,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法

    在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法

    這篇文章主要介紹了在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法,需要的的朋友參考下吧
    2017-01-01
  • Docker network自定義網(wǎng)絡(luò)方式

    Docker network自定義網(wǎng)絡(luò)方式

    這篇文章主要介紹了Docker network自定義網(wǎng)絡(luò)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker 部署 RocketMQ 5.1.0 踩坑指南從超時(shí)到 Console 連不上的完整解決方案

    Docker 部署 RocketMQ 5.1.0 踩坑指南從超時(shí)到 C

    最近在項(xiàng)目中引入RocketMQ作為消息中間件,選擇使用Docker容器化部署以簡化環(huán)境搭建,本文給大家介紹Docker 部署 RocketMQ 5.1.0 踩坑指南從超時(shí)到 Console 連不上的完整解決方案,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • docker離線安裝并導(dǎo)入鏡像過程

    docker離線安裝并導(dǎo)入鏡像過程

    這篇文章主要介紹了docker離線安裝并導(dǎo)入鏡像過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Linux執(zhí)行Docker命令提示Get Permission Denied的解決方案

    Linux執(zhí)行Docker命令提示Get Permission Denied的解決方案

    這篇文章主要介紹了Linux執(zhí)行Docker命令提示Get Permission Denied的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 如何快速清理 docker 資源的方法

    如何快速清理 docker 資源的方法

    這篇文章主要介紹了如何快速清理 docker 資源,具體點(diǎn)說就是刪除那些無用的 鏡像、容器、網(wǎng)絡(luò)和數(shù)據(jù)卷,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • jenkins如何進(jìn)行自動(dòng)化部署

    jenkins如何進(jìn)行自動(dòng)化部署

    這篇文章主要介紹了jenkins如何進(jìn)行自動(dòng)化部署問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論

长丰县| 新宾| 福州市| 阿瓦提县| 阳曲县| 沿河| 宁德市| 婺源县| 衡阳县| 建平县| 城市| 五莲县| 六安市| 宝坻区| 科技| 肇州县| 铜川市| 梨树县| 万州区| 合作市| 永济市| 安吉县| 青河县| 普安县| 珲春市| 宜都市| 成武县| 洛隆县| 东乡| 永清县| 广水市| 柘城县| 泰和县| 东乌珠穆沁旗| 滨州市| 灵寿县| 城口县| 湾仔区| 武陟县| 九寨沟县| 德惠市|