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
查看全部
發表第一個留言支持創作者!
本文您將可學到用幾個簡單的步驟,就可以快速整合推送功能到Unity的iOS和Android手機遊戲中。 幫你解決常見的代碼庫相衝問題,讓您的工作產能爆增。
這個教程可以幫助您為Unity遊戲設置崩潰日誌服務,讓您在短短幾分鐘內獲取崩潰日誌。
在撰寫這篇文章之前,我曾認為Unity的遊戲比使用JavaScript編寫的網頁遊戲更安全。因為編譯出的遊戲apk檔案是以二進制形式儲存,相較於使用純文字JavaScript程式碼建立的遊戲,要逆向工程遊戲應該非常困難。 然而,在進行了一些實驗後,我發現我的理論是錯誤的,因此決定寫下這篇教學文章。
本文您將可學到用幾個簡單的步驟,就可以快速整合推送功能到Unity的iOS和Android手機遊戲中。 幫你解決常見的代碼庫相衝問題,讓您的工作產能爆增。
這個教程可以幫助您為Unity遊戲設置崩潰日誌服務,讓您在短短幾分鐘內獲取崩潰日誌。
在撰寫這篇文章之前,我曾認為Unity的遊戲比使用JavaScript編寫的網頁遊戲更安全。因為編譯出的遊戲apk檔案是以二進制形式儲存,相較於使用純文字JavaScript程式碼建立的遊戲,要逆向工程遊戲應該非常困難。 然而,在進行了一些實驗後,我發現我的理論是錯誤的,因此決定寫下這篇教學文章。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
以前有很長一段時間效率老是比預期低,太多事情堆在一起時又會引爆「擺爛」機制,回過神來才在為了浪費的時間後悔。大學以來試過各種安排時間的APP,以下會簡介2個軟體、3個APP,再外加一我覺得對生活也很有幫助的APP。除了如何運用,也會說明這些軟體 / APP分別和組合運用的核心思維。
Thumbnail
在試過一些管理時間APP還是無法改善拖延症之後,我開始試著最簡單的表格做到以下三件事:1. 可以指出大約什麼時間應該做什麼,但保留彈性。2. 要有一點點「做到了」、「做得好」的回饋。3. 事後可以得知每件事大約需要多少時間。用三個月後,真心覺得這幾點都可以做到,效率也提升很多。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 去年我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也
Thumbnail
當前,DevOps在台灣已經逐漸深入到許多企業,儘管大部分仍處於工具導入階段。然而,企業的轉型並不簡單,特別是對於傳統製造業或硬體產業,轉變變得更加艱困。關鍵挑戰不在技術方面,而是在人的因素上。人的行為是難以完全控制的,這也是為何製造業傾向於降低人員介入,追求自動化或無人工廠。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也剛好
Thumbnail
CentOS 7 安裝及設定Jenkins 介紹 開源且免費的CI工具,由Java編寫的,提供了持續整合、構建以及部署的功能,是一個自動化的server 環境 CentOS 7 安裝步驟 1. 添加Jenkins Repository 2. 安裝Jenkins以及Java 3. 啟動並啟用Jenki
Thumbnail
S:財報後跌。📉 第三季度非 GAAP 每股收益為 - 0.16 美元,高出 0.06 美元。 收入為 1.1532 億美元(同比增長 105.9%),高出 432 萬美元。 年化經常性收入增長 106% 至 4.874 億美元。 客戶總數增長了約 55%,達到9,250 多個客戶。ARR 超過
Thumbnail
首先介紹我所體悟到的敏捷,以及我認為敏捷有點像是一些精神後所延伸創造出的一些產物跟方法,我認為它是用來克服一些問題而想出的思維,也藉由這個思維創造出一些敏捷的開發方式,建立出一些流程給想嘗試敏捷的人做參考。 何謂敏捷 敏捷這兩個字,會讓人很容易聯想到快速,想到快速就會有一種感覺好像整體花的時間就會.
Thumbnail
如何取得 azure devops  專案的 git repo 下載到 local  visual studio 開發? 登入azure devops azure devops/login/Repos/Files/project/clone copy to your vs  
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
以前有很長一段時間效率老是比預期低,太多事情堆在一起時又會引爆「擺爛」機制,回過神來才在為了浪費的時間後悔。大學以來試過各種安排時間的APP,以下會簡介2個軟體、3個APP,再外加一我覺得對生活也很有幫助的APP。除了如何運用,也會說明這些軟體 / APP分別和組合運用的核心思維。
Thumbnail
在試過一些管理時間APP還是無法改善拖延症之後,我開始試著最簡單的表格做到以下三件事:1. 可以指出大約什麼時間應該做什麼,但保留彈性。2. 要有一點點「做到了」、「做得好」的回饋。3. 事後可以得知每件事大約需要多少時間。用三個月後,真心覺得這幾點都可以做到,效率也提升很多。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 去年我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也
Thumbnail
當前,DevOps在台灣已經逐漸深入到許多企業,儘管大部分仍處於工具導入階段。然而,企業的轉型並不簡單,特別是對於傳統製造業或硬體產業,轉變變得更加艱困。關鍵挑戰不在技術方面,而是在人的因素上。人的行為是難以完全控制的,這也是為何製造業傾向於降低人員介入,追求自動化或無人工廠。
Thumbnail
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也剛好
Thumbnail
CentOS 7 安裝及設定Jenkins 介紹 開源且免費的CI工具,由Java編寫的,提供了持續整合、構建以及部署的功能,是一個自動化的server 環境 CentOS 7 安裝步驟 1. 添加Jenkins Repository 2. 安裝Jenkins以及Java 3. 啟動並啟用Jenki
Thumbnail
S:財報後跌。📉 第三季度非 GAAP 每股收益為 - 0.16 美元,高出 0.06 美元。 收入為 1.1532 億美元(同比增長 105.9%),高出 432 萬美元。 年化經常性收入增長 106% 至 4.874 億美元。 客戶總數增長了約 55%,達到9,250 多個客戶。ARR 超過
Thumbnail
首先介紹我所體悟到的敏捷,以及我認為敏捷有點像是一些精神後所延伸創造出的一些產物跟方法,我認為它是用來克服一些問題而想出的思維,也藉由這個思維創造出一些敏捷的開發方式,建立出一些流程給想嘗試敏捷的人做參考。 何謂敏捷 敏捷這兩個字,會讓人很容易聯想到快速,想到快速就會有一種感覺好像整體花的時間就會.
Thumbnail
如何取得 azure devops  專案的 git repo 下載到 local  visual studio 開發? 登入azure devops azure devops/login/Repos/Files/project/clone copy to your vs