DevOps效率提升:如何使用 ChatGPT 輕鬆優化 NodeJS Docker 镜像大小?

更新於 2024/11/09閱讀時間約 8 分鐘
raw-image

你有沒有想過用 ChatGPT 來減少 DevOps 工作?

今天我將向您展示如何使用 ChatGPT 減少 NodeJS 網絡應用程式的鏡像大小。

您會驚訝於 ChatGPT 如何能夠在短短幾分鐘內輕鬆生成一個無錯誤的 Docker 文件,來優化 Node.js docker 映像的大小。

在我們開始之前,您可能有一些問題。

我們為什麼需要優化網站應用程式的 Docker 映像?

因為這可以節省您建立Dcoker映像及發佈應用程式到雲端的時間。

想想看,如果您只是更改了一行代碼,但您需要等待超過 10 分鐘來檢查結果。聽起來像很瘋狂且效率不高。

假設您需要在 nodejs 中構建一個網站應用程式,您實際上可以在 Google 上輕易找到一個優化的 Docker 文件,如下所示。

FROM node:18.16.0-bullseye-slim

RUN apt-get update && apt-get install -y --no-install-recommends dumb-init

# Create app directory

WORKDIR /app

# Install app dependencies

COPY package*.json ./COPY .env ./RUN npm install

# Copying rest of the application to app directory

COPY . .

# Expose the port and start the application

ENV PORT 8080EXPOSE 8080CMD ["dumb-init", "npm", "start"]


這個 Docker 文件可以幫助您將檔案大小從 1 GB 降低到 401 MB,因為它使用了一個精簡版的 bullseye-slim docker。

raw-image

但這還不夠好,如果你知道多階段構建可以減少大小,但不知道如何編寫 Docker 文件怎麼辦?

您可以要求 ChatGPT 為您編寫完整的 Docker 文件,只需提供您原始的 Docker 文件並談論如何改進它。讓我們試試看。


ChatGPT Prompt:

raw-image

小秘訣:

  • 為了獲得更好的結果,您的提示應該給 ChatGPT 一個清晰的定位比如專業的 C#/Docker/JS/C++ 程序員、DevOps 或解決方案架構師,並提供一個示例。
  • 然後 ChatGPT 可以提供與您的問題相關的更好的答案。
  • 當然,這個小秘訣未來可以幫助您快速找到不同技術問題的解決方案。
  • 本文展示為英文,指令其實可以下中文,只要能夠滿足這秘訣的條件,你都會得到不錯的結果。

結果

raw-image
# Builder stage

FROM node:18.16.0-alpine as builder# Create app directory

WORKDIR /app# Install app dependencies by copying package.json and package-lock.json (if available)

COPY package*.json ./COPY .env ./

# Install dependencies

RUN npm install --production# Copy the rest of the application to app directory

COPY . .# Runner stage

FROM node:18.16.0-alpine# Install dumb-init

RUN apk add --no-cache dumb-init# Create app directory

WORKDIR /app# Copy built node modules and built dist directory from builder stage

COPY --from=builder /app .# Set the timezone and port environment variables

ENV TZ=Asia/TokyoENV PORT $TARGET_PORT

EXPOSE $TARGET_PORT

CMD ["dumb-init", "npm", "start"]


接著我們檢查結果。現在我們能將Docker大小從 401 MB 降低到 293 MB。

raw-image

接下來,我們可以詢問 ChatGPT 是否可以做得更好。

Prompt

raw-image
# Builder stage

FROM node:18.16.0-alpine as builder# Create app directory

WORKDIR /app# Install app dependencies by copying package.json and package-lock.json (if available)

COPY package*.json ./# Install only the production dependencies and make sure to clean up the cache

RUN npm install --production && npm cache clean --force# Copy the rest of the application to app directory

COPY . .# Prune unnecessary files, you might need to adjust this to your app's structure

# RUN rm -rf ./tests ./docs

# Runner stage

FROM node:18.16.0-alpine# Install dumb-init

RUN apk add --no-cache dumb-init# Create app directory

WORKDIR /app# Copy built node modules and the necessary app files from builder stage

COPY --from=builder /app .# If you have static assets or other files that need to be served, you could also add them here

# COPY --from=builder /app/public /public

ENV PORT=$TARGET_PORT

# Expose the application's port

EXPOSE $PORT

# Ensure the process is run as non-root user for security

USER nodeCMD ["dumb-init", "node", "index.js"]


接著我們檢查結果。現在我們能將鏡像大小從 401 MB 降低到 293 MB。

raw-image

哇,真不錯。

我們實際上在幾分鐘內就將 NodeJS 大小從 1 GB 減少了 73.2%,而且甚至不需要知道如何編寫 Docker 文件。

raw-image

最後的想法

在這篇文章中,您了解到只要通過給出適當的指令,ChatGPT 可能夠輕鬆地簡化您的 DevOps 工作,來提高您的生產力。

你甚至無需精通各種複雜編程代碼或 shell 腳本,只需提供清晰的指令。

通過這種方法,您不僅可以節省工作時間,還可以騰出更多時間來做喜歡的事,像是玩遊戲。

如果您認為這篇文章有用,請通過 👏 這篇文章或追蹤我們以獲得未來的最新教程。來表達您的支持。

感謝您的閱讀!


原文發佈於 Game Tech Tutorial

分享技術文章解決問題及生活點滴。技術包括雲端技術(AWS, GCP, Azure)的實戰經驗、雲端證照考試指南、Unity遊戲開發、DevOps、SDK,手機遊戲和應用程式及網站開發。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本文您將可學到用幾個簡單的步驟,就可以快速整合推送功能到Unity的iOS和Android手機遊戲中。 幫你解決常見的代碼庫相衝問題,讓您的工作產能爆增。
這個教程可以幫助您為Unity遊戲設置崩潰日誌服務,讓您在短短幾分鐘內獲取崩潰日誌。
在撰寫這篇文章之前,我曾認為Unity的遊戲比使用JavaScript編寫的網頁遊戲更安全。因為編譯出的遊戲apk檔案是以二進制形式儲存,相較於使用純文字JavaScript程式碼建立的遊戲,要逆向工程遊戲應該非常困難。 然而,在進行了一些實驗後,我發現我的理論是錯誤的,因此決定寫下這篇教學文章。
本文您將可學到用幾個簡單的步驟,就可以快速整合推送功能到Unity的iOS和Android手機遊戲中。 幫你解決常見的代碼庫相衝問題,讓您的工作產能爆增。
這個教程可以幫助您為Unity遊戲設置崩潰日誌服務,讓您在短短幾分鐘內獲取崩潰日誌。
在撰寫這篇文章之前,我曾認為Unity的遊戲比使用JavaScript編寫的網頁遊戲更安全。因為編譯出的遊戲apk檔案是以二進制形式儲存,相較於使用純文字JavaScript程式碼建立的遊戲,要逆向工程遊戲應該非常困難。 然而,在進行了一些實驗後,我發現我的理論是錯誤的,因此決定寫下這篇教學文章。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
Thumbnail
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們對 Docker 架構進行了講解,今天我們來講解 Docker 的好處,他到底可以幫助我們什麼事情 ? 為什麼 Docker 如此受人喜歡 ? 現在就來講述 Docker 有什麼好處 跨平台 Docker 可以確保在不同的作業系統是可運作的,可減少機器運作的問題 版本控制 打
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
Thumbnail
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們對 Docker 架構進行了講解,今天我們來講解 Docker 的好處,他到底可以幫助我們什麼事情 ? 為什麼 Docker 如此受人喜歡 ? 現在就來講述 Docker 有什麼好處 跨平台 Docker 可以確保在不同的作業系統是可運作的,可減少機器運作的問題 版本控制 打
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇