项目使用 nuxt2 写的, 现在进行了 npm run build 打包, 想在生产环境中使用docker部署,部署方式如下
上传项目
将打包后的 .nuxt, static, nuxt.config.js, package.json, node_modules上传至服务器 /home/wwwroot/default 下
(nginx等的配置略)
在项目目录创建启动文件
ecosystem.config.json
{
"apps": {
"name": "web",
"cwd": "/home/node",
"script": "./node_modules/nuxt/bin/nuxt.js",
"args": "-c /home/node/nuxt.config.js",
"exec_mode": "cluster",
"instances": 4,
"watch":false,
"error_file": "/home/logs/web-err.log",
"out_file": "/home/logs/web-out.log",
"log_date_format": "YYYY-MM-DD HH:mm:ss",
"autorestart": true,
"max_memory_restart": "500M"
}
}
一. 使用node镜像构建
直接基于拉取的node:16.14.0镜像运行一个容器
$ docker pull node:16.14.0
$ docker run -itd --name nuxtProject01 \
-p 3000:3000 \
-v /home/wwwroot/default:/home/node \
-v /home/logs:/home/logs node:16.14.0
然后进入容器内
$ docker exec -it nuxtProject01 bash
安装pm2
$ npm install pm2 -g
进入容器项目目录并执行ecosystem.config.json
$ cd /home/node && pm2 start ecosystem.config.json
项目可以正常运行
二. 现在使用Dockerfile的方式
Dockerfile文件:
FROM node:16.14.0
RUN npm config set registry https://registry.npm.taobao.org
RUN npm install pm2@5.2.0 -g
WORKDIR /home/node
ENV NODE_ENV=production
ENV HOST 0.0.0.0
EXPOSE 3000
CMD ["pm2-runtime", "start", "ecosystem.config.json"]
使用该 Dockerfile 构建自定义镜像:
$ docker build --no-cache -t nuxtImage:v1.0 .
基于镜像运行一个容器:
$ docker run -itd --name nuxtProject01 \
-p 3000:3000 \
-v /home/wwwroot/default:/home/node \
-v /home/logs:/home/logs nuxtImage:v1.0
现在访问服务,有以下报错:
No build files found in /home/node/ecosystem.config.json/.nuxt/dist/server. 02:09:50
Use either `nuxt build` or `builder.build()` or start nuxt in development mode.
Use either `nuxt build` or `builder.build()` or start nuxt in development mode.
at VueRenderer._ready (node_modules/@nuxt/vue-renderer/dist/vue-renderer.js:4219:13)
at async Server.ready (node_modules/@nuxt/server/dist/server.js:637:5)
at async Nuxt._init (node_modules/@nuxt/core/dist/core.js:720:7)
✖ Nuxt Fatal Error │
│ │
│ Error: No build files found in /home/node/ecosystem.config.json/.nuxt/dist/server. │
│ Use either `nuxt build` or `builder.build()` or start nuxt in development mode.
找不到原因头疼
你检查一下,怎么ecosystem.config.json 变文件夹了
/home/node/ecosystem.config.json/.nuxt/dist/server