使用 Docker 部署 Express API
Docker 是一种跨平台的虚拟化技术,提供操作系统级别的虚拟化以在云上运行应用程序。它使开发人员能够将他们的应用程序作为容器交付并避免系统冲突。 [](https://res.cloudinary.com/practicaldev/image/fetch/s--_sIV6PAB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:
Docker 是一种跨平台的虚拟化技术,提供操作系统级别的虚拟化以在云上运行应用程序。它使开发人员能够将他们的应用程序作为容器交付并避免系统冲突。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--_sIV6PAB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/p2hlebttob2ruv4siy8a.png)
Docker 容器可以通过 DockerHub 发布,也可以使用 zip 文件在本地分发。在撰写本文时,DockerHub 托管了超过一百万个公共 Docker 容器和镜像。
设置我们的 Express API
我们的 Express API 非常简单,只包含一个 GET 路由,它会说 hello 消息。
这就是我的index.js
文件的样子。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--jiLUhWr3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/jcqeyq284w4ye7ly1oml.png)
现在,创建一个名为 Dockerfile 的新文件并将以下代码粘贴到其中。
FROM node:16
# Create app directory
WORKDIR /usr/src/app
# Copy package.json
COPY package*.json ./
# Install dependencies
RUN yarn install
# Copy all files
COPY . .
# Expose port 3000
EXPOSE 3000
# Run app
CMD [ "node", "index.js" ]
进入全屏模式 退出全屏模式
上述文件内容的细分。
-
FROM Node:16 将从 DockerHub 拉取 Node v16 镜像
-
WORKDIR /usr/src/app - 这是我们的应用程序在容器内的位置
-
COPY package*.json ./ — 将 package.json 从本地目录复制到 docker 映像。
-
RUN yarn install — 这将安装所有依赖项。
-
副本。 . — 这会将所有项目文件复制到 Docker 映像中。
-
EXPOSE 3000 - 这将分配一个 docker 容器来使用端口 3000
-
CMD [ “node”, “index.js”] - 这将启动 Node JS 应用程序。
Dockerignore 文件:
现在创建一个 .dockerignore 文件并在其中添加以下内容。
node_modules
yarn*.log
进入全屏模式 退出全屏模式
与.gitignore
类似,这将在构建 docker 映像时忽略下面提到的文件。
构建 Docker 镜像:
完成上述过程后,我们必须将项目构建为 docker 映像才能使用它。
可以使用单行命令构建 Docker 映像。
docker build . -t="timeless-hello-world"
进入全屏模式 退出全屏模式
运行 Docker 镜像:
docker run -d -p 3000:3000 --name my-app timeless-hello-world
进入全屏模式 退出全屏模式
上述命令的分解:
-
-d 将在成功运行后分离终端。否则,如果我们关闭终端,服务器将停止。
-
-p 3000:3000 是我们希望应用程序运行的端口。
-
--name my-app 是容器的名称。
-
最后,timeless-hello-world 就是我们上一步构建的docker镜像。
-
一旦按下回车键。系统将提示您输入容器 ID。
我们还可以使用 docker ps 命令验证容器是否正在运行。
如果你在浏览器中打开http://localhost:3000,你会得到这样的 API 响应。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--TQaSiZ_m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/fuyyyey58t1qmr4ta3fr.png)
这就是本文的内容。希望这将有助于使用 docker 部署您的 Express API。
随意评论您的想法,如果您遇到任何困难,请告诉我。
更多推荐
所有评论(0)