环境准备
pm2部署
安装
npm install pm2 -g
常用命令
pm2 start <app> // 启动
pm2 restart <app> // 重启
pm2 stop <app> // 停止
pm2 list // 列出所有正在运行
pm2 logs <app> // 输出日志
pm2 delete <app> // 删除应用
pm2 show <app> // 显示详细信息
pm2 monit // 查看监控面版
配置文件
module.exports = {
apps: [
{
name: 'ifai',
port: '80',
args: '',
instances: 'max',
autorestart: true,
watch: false,
exec_mode: 'cluster',
cwd: './server',
script: 'index.mjs',
},
],
};
Docker部署
目录文件结构

- dist
- output(nuxt3打包后输出的文件,默认是
.output,去掉.)
- Dockerfile
- ecosystem.config.js
附Dockerfile文件
# 使用 Node.js 18 版本的官方镜像作为基础镜像
FROM node:18-alpine
# 设置工作目录为 /app
WORKDIR /app
# 复制当前目录下的所有文件到容器的 /app 目录中
COPY . /app
# 创建 logs 目录
RUN mkdir -p /app/logs
# 修改npm安装源
# RUN npm config set registry https://registry.npmmirror.com
# 安装pm2
RUN npm install pm2 -g
# 暴露容器80端口
EXPOSE 80
# 使用 PM2 运行 Nuxt 应用程序
CMD ["pm2-runtime", "start", "ecosystem.config.js"]
- ecosystem.config.js 同上
- output (nuxt3打包后输出的文件,默认是
.output,去掉.)
部署
上传文件
- 压缩dist目录,将dist.zip上传到服务器目录
/home/ifai/(示例,自已选择目录),执行命令
- 使用
SSH scp进行上传
scp ./output.zip root@148.135.30.176:/home/ifai/dist
cd /home/ifai/dist // 切到对应目录
rm -rf output // 删除旧文件夹
unzip output.zip // 解压
mv .output output // 重命名
制作镜像
docker build -t ifai-test . // <ifai-test>自已的镜像名
docker images // 制作完成后 查看已有镜像
运行容器
docker run -p 8000:80 --name ifai-fe-test -d ifai-test:latest
// 解释
// 8000:80(容器80端口指向系统8000端口)
// <ifai-fe-test> 容器名称
// <ifai-test:latest> 依赖上一步制作好的镜像
docker ps // 运行后查看运行中的容器
测试
curl http://127.0.0.1:8000 // 看输出
后续更新
- 将打包后的
.output修改为output,压缩上传到服务器/home/ifai/dist(示例)目录下
- 使用
SSH scp进行上传
scp ./output.zip root@148.135.30.176:/home/ifai/dist
cd /home/ifai/dist // 切到对应目录
rm -rf output // 删除旧文件夹
unzip output.zip // 解压
mv .output output // 重命名
rm -r output.zip
docker cp 主机路径 容器名:容器文件路径 // 后面路径是要复制到的目标路径
docker cp /home/ifai/dist/output ifai-fe-test:/app/
docker cp /home/ifai/dist/robots.txt ifai-fe-test:/app/output/public //替换robots.txt
docker restart ifai-fe-test // <ifai-fe-test>容器名
SSH更新
cd /home/ifai/dist // 切到对应目录
rm -r output.zip
scp ./output.zip root@148.135.30.176:/home/ifai/dist
unzip output.zip
mv .output output
cp ./robots.txt ./output/public
docker cp /home/ifai/dist/output ifai-fe-test:/app/
docker restart ifai-fe-test // 重启容器
问题
参考