启动 Node.js Docker 容器

使用上面的 Docker 镜像启动一个容器。

jackli@docker-01:~/nodejs_docker$ sudo docker run \
> --name nodejs-docker-app \
> -p 80:3000 \
> -d \
> 7be386175292
87f61f85cd0546786a2af8a5eb6da1402e753a1239a0f1088a735217130a603b

我们已经启动了 Node.js Docker 容器。
现在检查它的日志。

jackli@docker-01:~/nodejs_docker$ sudo docker logs nodejs-docker-app
Running at http://0.0.0.0:3000

为 Node.js Docker 项目创建一个目录

使用 ssh 工具以管理员用户身份连接 Docker 主机 (docker-01.onitroad.com)。

为我们的 Node.js Docker 项目创建一个目录。

jackli@docker-01:~$ mkdir ~/nodejs_docker
jackli@docker-01:~$ cd nodejs_docker

为 Node.js Docker 项目开发 Node Web 应用程序

为简单起见,我们正在为 Node.js Docker 容器编写一个“HelloWorld”节点 Web 应用程序。

jackli@docker-01:~/nodejs_docker$ nano myapp.js

并添加以下代码行以创建一个简单的“Hello World”应用程序。

'use strict';
const express = require('express');
// Constants
const PORT = 3000;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello World!');
});
app.listen(PORT, HOST);
console.log(`Running at http://${HOST}:${PORT}`);

创建 Node.js package.json 文件。
此文件为我们的 Node.js Docker 应用程序提供元数据信息。

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "JackLi Mansoor <jackli.fqyang@gmail.com>",
  "main": "myapp.js",
  "scripts": {
    "start": "node myapp.js"
  },
  "dependencies": {
    "express": "^4.16.1"
  }
}
在 Node.js Docker 容器中运行 Web 应用程序

Node.js 是一个开源的 JavaScript 运行时环境。

Node.js 用于开发服务器端脚本并用于创建动态 Web 应用程序。

在本文中,我们将学习如何在 Node.js Docker 容器中部署和运行 Web 应用程序。

为 Node.js Docker 项目创建一个 Dockerfile

定义部署过程,例如要使用的 docker 镜像、依赖项、服务端口等。
我们需要为我们的 Node.js Docker 容器创建一个 Dockerfile。

jackli@docker-01:~/nodejs_docker$ nano Dockerfile

其中添加以下指令(每个指令都在其前面的注释中进行了简要描述)。

# Docker Image to be used
FROM node:13-alpine
# Create a working directory within NodeJS Docker container
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+)
COPY package*.json ./
RUN npm install
# Bundle the App source
COPY . .
# Expose the port 3000 to network computers
EXPOSE 3000
#Run the node command and start our web application
CMD [ "node", "myapp.js" ]

我们在这里使用 node:13-alpine 图像,因为它是满足我们项目要求的最轻的图像。

但是,Docker Hub 上提供了许多节点镜像的变体。
要获取完整列表,我们可以访问 Node 页面的官方 Docker 镜像。

测试 Dockerized Node.js 应用程序

使用 curl 命令访问 Dockerized NodeJS 应用程序。

jackli@docker-01:~/nodejs_docker$ curl localhost:80
Hello World!

我们的 Node.js 应用程序已部署在 Docker 容器中。

www. On IT Road .com

构建 Node.js Docker 镜像

我们已经创建了 Dockerfile 和 Node.js Web 应用程序。

现在使用 Dockerfile 为我们的 Node.js Web 应用程序构建 Docker 镜像。

jackli@docker-01:~/nodejs_docker$ sudo docker build .
Sending build context to Docker daemon  4.096kB
Step 1/7 : FROM node:13-alpine
 ---> 483343d6c5f5
Step 2/7 : WORKDIR /usr/src/app
 ---> Using cache
 ---> bad78ca928c6
Step 3/7 : COPY package*.json ./
 ---> Using cache
 ---> fdd7ac2c1274
Step 4/7 : RUN npm install
 ---> Using cache
 ---> 8a34ec80bd87
Step 5/7 : COPY . .
 ---> 873f9ddd4360
Step 6/7 : EXPOSE 3000
 ---> Running in 7d567e0f4da3
Removing intermediate container 7d567e0f4da3
 ---> b3e087682594
Step 7/7 : CMD [ "node", "myapp.js" ]
 ---> Running in 4e170d3a1567
Removing intermediate container 4e170d3a1567
 ---> 7be386175292
Successfully built 7be386175292

我们已经成功构建了我们的 Node.js Docker 镜像。

我们已在本地构建此镜像,但是我们可以使用 Docker Hub 凭据在 Docker Hub 上构建和存储此镜像。

日期:2020-09-17 00:16:39 来源:oir作者:oir