[nodejs/npm] 基于Docker创建Nodejs前端应用

千千寰宇 / 2024-03-21 / 原文

0 序

1 创建过程

Step1 创建前端应用工程

工程的源码目录如下

/data/nodejs/node-demo-app
---- app.js
---- Dockefile

Step1.1 编辑app.js

mkdir -p /data/nodejs/node-demo-app

vi /data/nodejs/node-demo-app/app.js

app.js 的文件内容如下:

const express = require('express')
const mongoose = require('mongoose');

const app = express();

app.get('/', (req, res) => {
   res.send('Yayyy!! Containers are a piece of cake');
});

app.listen(3000, () => {
   console.log('Container running with db connection');
});

Step1.2 编辑Dockfile

vi /data/nodejs/node-demo-app/Dockerfile

文件内容如下:

# 指定node版本为21.7.1 | 注: 需要提前下载node 21.7.1 的镜像(docker pull node:12.7.1 / docker pull node:14 / ...)
FROM node:21.7.1

# 项目在docker里面的工作目录,/app 只是随意指定的目录而已
WORKDIR /app

# 把当前目录(第1个.)下的所有文件添加到docker里面的 /app  目录
COPY . .

# build docker 镜像时运行npm命令。这一步是在docker里面跑的命令
# RUN npm install
# 通过 npm init 生成 /app/package.json 等npm所需的配置文件;否则没有 /app/package.json 时构建镜像会失败
RUN npm init -y
# 添加业务源代码 app.js 中所需的依赖组件 : express / mongoose , 并通过--save 指令添加到 package.json 的 dependency 中
RUN npm install express --save
RUN npm install mongoose --save

EXPOSE 3000

# CMD [ "node", "app.js" ]
# 或等效于:
CMD node app.js

Step2 安装 Dockerfile 所需的基础镜像

docker pull node:21.7.1

docker images

Step3 基于Dockerfile构建应用镜像

cd /data/nodejs/node-demo-app
docker build -t node-demo-app:latest -t node-demo-app:1.0.0 .

[x] 或 :docker build -f /data/nodejs/node-demo-app/Dockerfile -t node-demo-app:latest -t node-demo-app:1.0.0 .
[x] 或 : docker build .
  • -t : 添加标签(支持添加多个标签)
  • -f : 手动指定Dockerfile文件的路径

构建镜像完成后,查看一下:

docker images

Step4 基于应用镜像,创建并运行容器

docker run --name node-demo-app-1 -d -p 8000:3000 node-demo-app:1.0.0
docker ps -a 
docker logs node-demo-app-1

Step5 验证

curl -v -XGET http://127.0.0.1:8000

  • 查看容器内的目录情况
docker exec -it node-demo-app-1 sh -c "ls -la /app"

docker exec -it node-demo-app-1 sh -c "ls -la /"

StepX 停止运行容器、删除镜像 [可选]

docker stop node-demo-app-1
docker rm node-demo-app-1
docker rmi node-demo-app:1.0.0

docker images | grep -i node-demo-app

X 参考文献

  • docker
  • https://hub-stage.docker.com/_/node/tags
  • https://hub-stage.docker.com/layers/library/node/21.7.1/images/sha256-ca75f977b1c9e9a2cc5480efe5b7df07ce38373316e30b91eeadddb6a025b8a8?context=explore
  • 容器化初学者:使用 Docker 运行 nodeJS 应用程序 - devpress.csdn.net 【推荐】
  • docker简单运行nodejs应用 - jianshu 【推荐】
  • docker启动node.js项目 - 博客园/千千寰宇 【推荐】
  • [npm] NPM入门教程 - 博客园/千千寰宇 【推荐】
  • [nodejs] NodeJs入门教程 - 博客园/千千寰宇 【推荐】
  • [Docker] Docker 基础教程(概念/原理/基础操作) - 博客园/千千寰宇 【推荐】
  • Dockerfile / ...
  • npm init -y nodejs -CSDN 【推荐】
  • Error: Cannot find module ‘express‘ - CSDN
  • 在服务器上部署后端时 SyntaxError: Unexpected token '??=' - jdk5.com