0


部署Nuxt3项目(含PM2、Docker部署,及配合jenkins实现自动化部署)

本篇专栏基于笔者的Vue专栏,Nuxt3系列,如有不连贯之处可查看Nuxt3系列其他文章!特此说明

笔者这里的环境是两台服务器,一个是jenkins服务器,一个是测试服务器;
jenkins服务器中的

  1. jenkins

是通过

  1. docker-compose

部署的, 如果需要配置可以留言或私信作者;
测试服务器中的

  1. nginx

是单独安装的,然后测试服务器中还安装了

  1. docker


不管是

  1. pm2

部署还是

  1. docker

部署,最终都是用nginx将服务代理出去,nginx服务代理配置会在下面,具体体现;

一、PM2部署

nuxt3 建议node版本最低为18.16.0,如果服务器上有多个项目依赖node版本不建议直接更改,建议采用docker方式进行部署

1 - 项目根目录创建pm2配置文件

  1. // ecosystem.config.js
  2. module.exports ={apps:[{name:'项目名',port:'10200',exec_mode:'cluster',instances:'3',script:'./.output/server/index.mjs'}]}

执行

  1. pm2 start ecosystem.config.js

二、Docker镜像部署

1 - 编写Dockerfile文件

  1. # 第一阶段
  2. FROM node:18.16.0 AS build-stage
  3. # 创建工作目录
  4. RUN mkdir-p /app
  5. WORKDIR /app
  6. # 复制项目文件和目录到容器中
  7. COPY . /app
  8. # 安装依赖项并构建应用程序
  9. RUN npminstall--registry https://registry.npmmirror.com &&\npm run build &&\npm cache clean --force# 清理node_modules目录
  10. RUN rm-rf ./node_modules
  11. # 第二阶段
  12. FROM node:18.16.0 AS runtime-stage
  13. # 创建工作目录
  14. RUN mkdir-p /app
  15. WORKDIR /app
  16. # 复制构建阶段生成的输出到运行时阶段
  17. COPY --from=build-stage /app/.output /app/.output
  18. COPY ./package.json /app/
  19. # 设置环境变量
  20. ENV NITRO_PORT=10200# 暴露端口
  21. EXPOSE 10200# 设置入口点为启动脚本
  22. ENTRYPOINT ["npm", "run", "start"]

2 - 编写docker-compose.yml

  1. version: "3"
  2. services:
  3. 项目名称:
  4. image: Dockfile打包好的项目镜像
  5. restart: unless-stopped
  6. build:
  7. context: ./
  8. ports:
  9. - 10200:10200
  10. container_name: 容器名称,一般是用项目名称即可

3 - 修改package.json

  1. {...
  2. "script":{"build":"nuxt build",
  3. "dev":"nuxt dev --host",
  4. "generate":"nuxt generate",
  5. "preview":"nuxt preview",
  6. "postinstall":"nuxt prepare",
  7. "start":"node .output/server/index.mjs"}...
  8. }

4 - 使用jenkins进行自动化部署

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

笔者这里使用的是手动触发,如果向推送触发可以使用webhook

在这里插入图片描述
在这里插入图片描述

注意看蓝色文字

在这里插入图片描述

然后点保存

5 - 编写上传到测试服务器的脚本文件

这里其实就是上面

  1. jenkins

配置的,Remote directory目录下

  1. cd`jenkins remote directory`sudovim pub.sh
  1. #!/bin/bashlocal_file="/jenkins remote directory/项目docker镜像.tar"remote_dir="/测试服务器目录"scp-i ./私钥文件 "$local_file""root@测试服务器地址:$remote_dir"s1="cd /测试服务器目录"s2="docker rm -f 项目docker镜像"s3="docker rmi 项目docker镜像"s4="docker load -i ./项目docker镜像.tar"s5="docker-compose up -d"ssh-i ./私钥文件 root@测试服务器地址 "$s1; $s2; $s3; $s4; $s5;"> ./output.txt

到此,如果配置没有问题的话就完成了自动化部署

  1. docker nuxt3

项目了,别忘了在

  1. jenkins

平台中手动构建一下,如果报超时警告了(注意不是错误),需要在该项目

  1. jenkins

配置中,将12000改成半个小时的秒数,还有就是在测试服务器中提前将写好的

  1. docker-compose.yml

上传上去,避免报错;

三、配置NGINX代理

  1. server {
  2. listen 80;
  3. server_name test.com;
  4. location / {
  5. proxy_pass http://127.0.0.1:10200;
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Real-IP $remote_addr;}}
  8. server {
  9. listen 443 ssl;
  10. server_name test.com;
  11. ssl_certificate /usr/local/nginx/conf/ssl/test.pem;#证书文件目录
  12. ssl_certificate_key /usr/local/nginx/conf/ssl/test.key;#证书文件目录
  13. ssl_session_cache shared:SSL:1m;
  14. ssl_session_timeout 5m;
  15. ssl_prefer_server_ciphers on;
  16. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  17. ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;
  18. client_max_body_size 500M;
  19. add_header Cache-Control "no-cache, no-store, must-revalidate";
  20. add_header Pragma "no-cache";
  21. add_header Expires 0;
  22. location / {
  23. proxy_pass http://127.0.0.1:10200;
  24. proxy_set_header Host $host;
  25. proxy_set_header X-Real-IP $remote_addr;}}

这里没有做强制https如果有需要自行更改


本文转载自: https://blog.csdn.net/weixin_44531811/article/details/135768154
版权归原作者 梨花炖海棠 所有, 如有侵权,请联系我们删除。

“部署Nuxt3项目(含PM2、Docker部署,及配合jenkins实现自动化部署)”的评论:

还没有评论