# 构建并部署 Node.js 应用

代码示例:

https://github.com/TencentCloudBase/cloudbase-examples/tree/master/cloudbaserun/node (opens new window)

点击下方按钮一键部署:

(opens new window)

# 第 1 步:编写基础应用

创建名为 helloworld 的新目录,并转到此目录中:

mkdir helloworld
cd helloworld

创建一个包含以下内容的 package.json 文件:

{
  "name": "helloworld",
  "description": "Simple hello world sample in Node",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "Tencent CloudBase",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.17.1"
  }
}

在同一目录中,创建一个 index.js 文件,并将以下代码行复制到其中:

const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send(`Hello World!`);
});

const port = 8080;
app.listen(port, () => {
  console.log(`helloworld: listening on port ${port}`);
});

此代码会创建一个基本的 Web 服务器,侦听 8080 端口。

# 第 2 步:将应用容器化

在项目根目录下,创建一个名为 Dockerfile 的文件,内容如下:

# 使用官方 Node.js 12 轻量级镜像.
# https://hub.docker.com/_/node
FROM node:12-slim

# 定义工作目录
WORKDIR /usr/src/app

# 将依赖定义文件拷贝到工作目录下
COPY package*.json ./

# 以 production 形式安装依赖
RUN npm install --only=production

# 将本地代码复制到工作目录内
COPY . ./

# 启动服务
CMD [ "node", "index.js" ]

添加一个 .dockerignore 文件,以从容器映像中排除文件:

Dockerfile
.dockerignore
node_modules
npm-debug.log

# 第 3 步(可选):本地构建镜像

如果您本地已经安装了 Docker,可以运行以下命令,在本地构建 Docker 镜像:

docker build -t helloworld .

构建成功后,运行 docker images,可以看到构建出的镜像:

REPOSITORY     TAG       IMAGE ID         CREATED          SIZE
helloworld   latest    1c8dfb88c823     8 seconds ago      146MB

随后您可以将此镜像上传至您的镜像仓库。

# 第 4 步:部署到 CloudBase 云托管

请参考 部署服务版本配置说明