用过宝塔或手动部署node-api项目就知道
有多少时候是因为生产环境上node的版本与我们提交的node版本过高或过低导致无法运行的
这几天玩docker随便把我原先的项目尝试打包镜像部署下
1.确保你的package.json中script有命令执行
我这里serve的nodemon是开发环境使用的更改持久化动态刷新
start的node在生产环境使用
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"serve": "nodemon index.js",
"start": "node index.js"
},
"author": "NanKe",
"license": "ISC",
"dependencies": {
"axios": "^0.26.1",
"bcryptjs": "^2.4.3",
"dayjs": "^1.10.7",
"express": "^4.17.3",
"express-async-errors": "^3.1.1",
"express-jwt": "^6.1.1",
"jsonwebtoken": "^8.5.1",
"log4js": "^6.4.4",
"mongoose": "^6.2.9",
"multer": "^1.4.4",
"node-schedule": "^2.1.0",
"nodemailer": "^6.7.3",
"socket.io": "^4.4.0"
}
}
2.上传你的node项目到服务器(我这边是openwrt软路由)
3.在当前node项目手动创建Dockerfile文件
内容如下:
#设置基础镜像
FROM node:16.13.0
#创建镜像目录,保存我们的代码
RUN mkdir -p /usr/src/mynodeapi
#设置工作目录(注意:这个文件路径是镜像内部的文件路径)
WORKDIR /usr/src/mynodeapi
#把当前目录下的所有文件拷贝到镜像的/usr/src/mynodeapi文件夹下
COPY . /usr/src/mynodeapi
#编译运行node项目,使用npm安装程序的所有依赖
RUN npm install
#暴露container的端口
EXPOSE 5000
#运行命令
CMD npm run start
4.当前Dockerfile下 打包成一个名为mynodeapi的镜像
docker build -t mynodeapi .
5.docker images看下
有啦 是真的大 940M!
6.根据镜像启动容器
docker run -d -p 5000:5000 mynodeapi
成功启动
记得打开openwrt的端口后重启容器