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

0 序

  • 本文是基于nodejs/npm前端工程容器化实践经典案例。

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 中默认含 npm 等指令 | 注: 需要提前下载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里面跑的命令
# 根据 package.json 自动安装所需依赖
# 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
  • Dockerfile / ...
posted @ 2024-03-21 02:01  千千寰宇  阅读(1039)  评论(0编辑  收藏  举报