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

閱讀時間約 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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
DevOpsDays Taipei 2024將於台北南港的 POPOP Taipei 舉行!活動將匯集頂尖 DevOps 專家,提供豐富的 40 分鐘演講、25 分鐘主題分享和 90 分鐘實戰工作坊。其中包含AIOps、CI/CD、DevSecOps 等,還有場邊活動讓你拓展人脈,不容錯過的技術盛會
Thumbnail
這篇的DevOps發佈系統是以Spring Cloud微服務(微服務)為背景;由GitLab、Harbor與Kubernetes組成。 GitLab負責版本管理與CI/CD(CI/CD)。 Harbor負責Docker([Docker]介紹) Image的儲存與發佈。 Kubernetes([
Thumbnail
Google Cloud Certified Professional Cloud DevOps Engineer 考試/資源/心得
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
這篇文章要來分享我轉職成為 DevOps 工程師的心得。儘管薪水少了 25%,但我毫不後悔離開微軟,因為我更喜歡現在的工作。強調選對直屬主管的重要性,並分享在實際執行工作上的滿足感。再加上團隊氛圍良好,成員相互支持,對我來說這才是選工作時更重要的元素。
Thumbnail
以前有很長一段時間效率老是比預期低,太多事情堆在一起時又會引爆「擺爛」機制,回過神來才在為了浪費的時間後悔。大學以來試過各種安排時間的APP,以下會簡介2個軟體、3個APP,再外加一我覺得對生活也很有幫助的APP。除了如何運用,也會說明這些軟體 / APP分別和組合運用的核心思維。
Thumbnail
在試過一些管理時間APP還是無法改善拖延症之後,我開始試著最簡單的表格做到以下三件事:1. 可以指出大約什麼時間應該做什麼,但保留彈性。2. 要有一點點「做到了」、「做得好」的回饋。3. 事後可以得知每件事大約需要多少時間。用三個月後,真心覺得這幾點都可以做到,效率也提升很多。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 去年我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也
Thumbnail
當前,DevOps在台灣已經逐漸深入到許多企業,儘管大部分仍處於工具導入階段。然而,企業的轉型並不簡單,特別是對於傳統製造業或硬體產業,轉變變得更加艱困。關鍵挑戰不在技術方面,而是在人的因素上。人的行為是難以完全控制的,這也是為何製造業傾向於降低人員介入,追求自動化或無人工廠。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也剛好
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
DevOpsDays Taipei 2024將於台北南港的 POPOP Taipei 舉行!活動將匯集頂尖 DevOps 專家,提供豐富的 40 分鐘演講、25 分鐘主題分享和 90 分鐘實戰工作坊。其中包含AIOps、CI/CD、DevSecOps 等,還有場邊活動讓你拓展人脈,不容錯過的技術盛會
Thumbnail
這篇的DevOps發佈系統是以Spring Cloud微服務(微服務)為背景;由GitLab、Harbor與Kubernetes組成。 GitLab負責版本管理與CI/CD(CI/CD)。 Harbor負責Docker([Docker]介紹) Image的儲存與發佈。 Kubernetes([
Thumbnail
Google Cloud Certified Professional Cloud DevOps Engineer 考試/資源/心得
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
這篇文章要來分享我轉職成為 DevOps 工程師的心得。儘管薪水少了 25%,但我毫不後悔離開微軟,因為我更喜歡現在的工作。強調選對直屬主管的重要性,並分享在實際執行工作上的滿足感。再加上團隊氛圍良好,成員相互支持,對我來說這才是選工作時更重要的元素。
Thumbnail
以前有很長一段時間效率老是比預期低,太多事情堆在一起時又會引爆「擺爛」機制,回過神來才在為了浪費的時間後悔。大學以來試過各種安排時間的APP,以下會簡介2個軟體、3個APP,再外加一我覺得對生活也很有幫助的APP。除了如何運用,也會說明這些軟體 / APP分別和組合運用的核心思維。
Thumbnail
在試過一些管理時間APP還是無法改善拖延症之後,我開始試著最簡單的表格做到以下三件事:1. 可以指出大約什麼時間應該做什麼,但保留彈性。2. 要有一點點「做到了」、「做得好」的回饋。3. 事後可以得知每件事大約需要多少時間。用三個月後,真心覺得這幾點都可以做到,效率也提升很多。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 去年我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也
Thumbnail
當前,DevOps在台灣已經逐漸深入到許多企業,儘管大部分仍處於工具導入階段。然而,企業的轉型並不簡單,特別是對於傳統製造業或硬體產業,轉變變得更加艱困。關鍵挑戰不在技術方面,而是在人的因素上。人的行為是難以完全控制的,這也是為何製造業傾向於降低人員介入,追求自動化或無人工廠。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也剛好