启动 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 是一个开源的 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 容器中。
构建 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 上构建和存储此镜像。