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

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

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

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

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

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

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

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

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

npx create-react-app docker-image-test

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

之后,進(jìn)入根目錄并運行項目。

cd docker-image-testyarn installyarn start

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

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

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

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

請注意,我們正在從 docker hub 獲取基本映像 node:12,安裝依賴項并運行基本命令。(這里不深入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 。

我們可以使用以下命令運行圖像

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

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

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

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

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

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

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

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

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

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

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

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

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

配置看起來像這樣。

# 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

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

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

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

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

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

步驟5:使用 NGINX

我們正在使用節(jié)點服務(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!

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

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

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

請注意,我們將容器的 80 端口暴露給外部,因為默認(rèn)情況下,Nginx將在容器內(nèi)的端口 80 上可用。

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

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

相關(guān)文章

  • Docker網(wǎng)絡(luò)及容器通信原理詳解

    Docker網(wǎng)絡(luò)及容器通信原理詳解

    這篇文章主要介紹了Docker網(wǎng)絡(luò)及容器通信原理詳解的相關(guān)資料,并通過啟動幾個容器來探究Docker網(wǎng)絡(luò)及容器通信,需要的朋友可以參考下
    2022-11-11
  • docker如何安裝doris

    docker如何安裝doris

    文章介紹了使用Docker安裝Apache Doris的兩種方法:通過Docker Compose部署和手動部署,前者通過創(chuàng)建`docker-compose.yml`文件并運行命令來啟動集群,后者則需要手動拉取鏡像、啟動容器、復(fù)制安裝包并解壓、配置并啟動服務(wù)
    2025-02-02
  • Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析

    Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析

    在本篇文章里小編給大家整理的是關(guān)于Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析,有需要的朋友們可以參考下。
    2020-02-02
  • docker-compose使用中遇到的坑及解決

    docker-compose使用中遇到的坑及解決

    這篇文章主要介紹了docker-compose使用中遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解掛載運行的docker容器中如何掛載文件系統(tǒng)

    詳解掛載運行的docker容器中如何掛載文件系統(tǒng)

    這篇文章主要給大家介紹了如何在掛載運行中的docker容器中掛載文件系統(tǒng),文中通過一步步的實踐過程介紹的很詳細(xì),相信對有需要的朋友們來說具有一定的參考借鑒價值,感興趣的朋友們下面來一起看看吧。
    2016-12-12
  • docker容器的一些常見命令小結(jié)

    docker容器的一些常見命令小結(jié)

    Docker是目前最流行的容器化平臺之一,它提供了一種輕量級的虛擬化解決方案,使得應(yīng)用程序的部署和管理變得更加便捷和高效,這篇文章主要給大家總結(jié)介紹了關(guān)于docker容器的一些常見命令,需要的朋友可以參考下
    2024-01-01
  • 利用Docker部署PostgreSQL 12.4主從方式

    利用Docker部署PostgreSQL 12.4主從方式

    這篇文章主要介紹了利用Docker部署PostgreSQL 12.4主從方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Docker部署MinIO鏡像的方法(保姆級教程)

    Docker部署MinIO鏡像的方法(保姆級教程)

    本文主要介紹了使用Docker部署MinIO鏡像,包括創(chuàng)建掛載目錄、運行MinIO容器的參數(shù)解析、使用Compose運行MinIO容器等,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • Docker 教程之鏡像創(chuàng)建及修改詳細(xì)介紹

    Docker 教程之鏡像創(chuàng)建及修改詳細(xì)介紹

    這篇文章主要介紹了Docker 教程之鏡像創(chuàng)建及修改詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 詳解Docker方式實現(xiàn)MySql 主從復(fù)制(實踐篇)

    詳解Docker方式實現(xiàn)MySql 主從復(fù)制(實踐篇)

    本篇文章主要介紹了詳解Docker方式實現(xiàn)MySql 主從復(fù)制(實踐篇),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論