如何 Docker 化和部署 Express.js API

2025-06-04

如何 Docker 化和部署 Express.js API

如果您只是来复制和粘贴,下面是最终的 Dockerfile,它将为您的 Express.js 应用程序生成图像:

FROM node:22.10.0-alpine.3.19

LABEL maintainer="jonas@sliplane.io"

WORKDIR /app

COPY package* ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["node", "index.js"]
Enter fullscreen mode Exit fullscreen mode

这是您应该使用的 .dockerignore 文件:

node_modules
npm-debug.log
Enter fullscreen mode Exit fullscreen mode

要构建并运行图像,请使用以下命令:

docker build -t express-app .
docker run -p 3000:3000 express-app
Enter fullscreen mode Exit fullscreen mode

不想直接复制粘贴?我们来看看 Dockerfile 里都做了些什么!

我们开始吧

设置

在本教程中,我假设您已经设置了一个 Express.js 项目。Express.js 是一个精简且灵活的 Node.js Web 应用程序框架,它为 Web 和移动应用程序提供了一组强大的功能。如果您有不同的设置,则可能需要相应地调整 Dockerfile。

通常情况下,你会在本地运行npm installnode index.js开始工作。对于部署,我们将使用类似的方法,但需要在 Docker 容器内进行。

让我们深入了解 Dockerfile 的细节。

Dockerfile

FROM node:22.10.0-alpine.3.19

LABEL maintainer="jonas@sliplane.io"

WORKDIR /app

COPY package* ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["node", "index.js"]
Enter fullscreen mode Exit fullscreen mode

那么这里发生了什么?

  1. 基础图像:
    • 在 Alpine 3.19 上使用 Node.js 22.10.0,提供轻量级的基础镜像。
    • LABEL指令将元数据添加到图像中。
  2. 工作目录:
    • 设置/app为后续指令的工作目录。
  3. 依赖项安装:
    • package.jsonpackage-lock.json(如果存在)复制到工作目录。
    • 运行npm install以安装依赖项。
  4. 申请代码:
    • 将其余应用程序代码复制到容器中。
  5. 端口暴露:
    • 公开端口 3000,通常由 Express.js 应用程序使用。
  6. 启动命令:
    • 指定使用来运行应用程序的命令node index.js

这种方法比我们用于 Astro 的多阶段构建更简单,因为 Express.js 应用程序通常不需要单独的构建步骤。

确保添加.dockerignore文件以忽略node_modules文件夹和 npm 调试日志。这将加快构建过程并减小镜像大小。

部署

你可以将此 Docker 容器部署到任何支持 Docker 的云提供商。例如,你可以使用 Heroku、DigitalOcean 或 AWS ECS 等平台。因为我是Sliplane的联合创始人,所以我将向你展示如何在这些平台上部署它。

注册后,您可以通过选择您的 Github 仓库来创建新服务。然后,只需保留默认设置并单击“部署”。

Sliplane 服务创建

部署后,您的 Express.js 应用程序将在sliplane.app的子域下可用,通常它只是您的服务名称。

您还可以查看应用日志、CPU 和内存使用情况等指标、添加持久存储等等。每当您推送到代码库时,Sliplane 都会自动部署您的应用。

如果你想尝试Sliplane,前两天免费!快来试试,然后告诉我你的想法吧 :)

2 分钟内部署 ExpressJS

后续步骤

您还有什么想了解的吗?需要帮助将 Express.js 应用 Docker 化吗?需要帮助将其部署到特定平台吗?欢迎随时联系我!您可以在X
上找到我,也可以直接在本博客上发表评论。

干杯,

乔纳斯

文章来源:https://dev.to/code42cate/how-to-dockerize-and-deploy-expressjs-apis-k5d
PREV
如何赢得任何黑客马拉松🚀🤑
NEXT
How I save $$$ by self-hosting these 5 open source tools