如果您只是在這裡複製和貼上,這裡是最終的 Dockerfile,它將為您的 Express.js 應用程式生成映像:
FROM node:22.10.0-alpine.3.19
LABEL maintainer="[email protected]"
WORKDIR /app
COPY package* ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
這是您應該使用的 .dockerignore 檔案:
node_modules
npm-debug.log
要建置並執行映像,請使用以下命令:
docker build -t express-app .
docker run -p 3000:3000 express-app
不只是在這裡複製和貼上嗎?讓我們來看看 Dockerfile 中發生了什麼!
對於本教程,我假設您已經設定了一個 Express.js 專案。 Express.js 是一個最小且靈活的 Node.js Web 應用程式框架,為 Web 和行動應用程式提供了一組強大的功能。如果您有不同的設置,則可能需要相應地調整 Dockerfile。
通常,您將執行npm install
,然後執行node index.js
以在本地工作。對於部署,我們將使用類似的方法,但在 Docker 容器內。
讓我們深入了解 Dockerfile 的詳細資訊。
FROM node:22.10.0-alpine.3.19
LABEL maintainer="[email protected]"
WORKDIR /app
COPY package* ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
那麼這裡發生了什麼事?
在 Alpine 3.19 上使用 Node.js 22.10.0,提供輕量基礎鏡像。
LABEL
指令將元資料加入影像中。
/app
設定為後續指令的工作目錄。將package.json
和package-lock.json
(如果存在)複製到工作目錄。
執行npm install
以安裝相依性。
node index.js
執行應用程式的命令。這種方法比我們用於 Astro 的多階段建置更簡單,因為 Express.js 應用程式通常不需要單獨的建置步驟。
確保新增.dockerignore
檔案以忽略node_modules
資料夾和 npm 偵錯日誌。這將加快建置過程並減小圖像大小。
您可以將此 Docker 容器部署到任何支援 Docker 的雲端提供者。例如,您可以使用 Heroku、DigitalOcean 或 AWS ECS 等平台。因為我是Sliplane的聯合創始人,所以我將向您展示如何在那裡部署它。
註冊後,您可以透過選擇 Github 儲存庫來建立新服務。然後保留預設設定並點擊部署。
部署後,您的 Express.js 應用程式將在sliplane.app的子網域下可用,通常只是您的服務名稱。
您還可以查看應用程式的日誌、查看 CPU 和記憶體使用情況等指標、新增持久性儲存等等。每當您推送到儲存庫時,Sliplane 都會自動部署您的應用程式。
如果您想嘗試Sliplane ,前 2 天免費!試試一下,讓我知道你的想法:)
https://sliplane.io?utm\_source=dockerize-express 在 2 分鐘內部署 ExpressJS 🚀
還有什麼想知道的嗎?您需要 Docker 化 Express.js 應用程式的協助嗎?您需要協助將其部署到特定平台嗎?請隨時與我們聯繫!
您可以在X上找到我,或在這個部落格上發表評論。
乾杯,
喬納斯
原文出處:https://dev.to/code42cate/how-to-dockerize-and-deploy-expressjs-apis-k5d