Nuxt3 利用脚本把本地项目自动部署到服务器Docker中
nuxt3 利用脚本把本地项目自动部署到服务器docker中
说明
在nuxt3项目的阶段开发完毕后,需要把build后的网站发布到服务器的docker中
如果采用手工发布比较麻烦
采用git结合持续化部署需要搭建一套持续化部署平台,比较复杂
这里采用shell脚本的方式把本地开发好的项目自动部署到服务中并重启容器
环境准备
服务器支持采用密钥方式登录
服务器支持非管理员用户直接使用sudo执行命令,无需输入密码
部署脚本
sh/config
shopt -s expand_aliases # 启用别名 echo '发布到hw.rstone.com.cn' SERVER='test@hw.rstone.com.cn' #ssh alias SSHEXEC='ssh -i /Users/test/.ssh/id_rsa.hw test@hw.rstone.com.cn' alias SSHEXECSUDO='ssh -i /Users/test/.ssh/id_rsa.hw test@hw.rstone.com.cn sudo' alias SSHSCP='scp -i /Users/test/.ssh/id_rsa.hw 'sh/deploy.sh
#!/bin/bash #脚本在执行时遇到错误立即退出 set -e #开启命令打印用于调试 #set -x #获取本执行文件的路径 currentpath=$(cd "$(dirname "$0")" && pwd) #加载配置文件 source ${currentpath}/config echo "将发布.out/目录下面的内容到服务器的docker镜像rstone-web-nuxt3:" read -p "是否发布[y/n]:" yn if [ "${yn}" != "y" ]; then #退出发布 echo "退出发布" exit 1 fi echo "开始发布..." TMPPATH=${currentpath}/tmp #发布 echo "删除发布临时文件:${TMPPATH}/output.zip" rm -rf ${TMPPATH}/output.zip echo "压缩./out目录下面的内容..." if [ ! -d $TMPPATH ]; then mkdir -p ${TMPPATH} fi zip -r $TMPPATH/output.zip ./.output echo "上传${TMPPATH}/output.zip 到服务器..." SERTMPPATH="/tmp/rstone-web-nuxt3" echo "删除服务器上临时目录:${SERTMPPATH}" SSHEXEC "yes | sudo rm -rf ${SERTMPPATH}" echo ”创建服务器上临时目录:${SERTMPPATH}” SSHEXEC mkdir -p ${SERTMPPATH} echo "上传文件到服务器:${SERTMPPATH}" eval SSHSCP " -r ${TMPPATH}/output.zip ${SERVER}:${SERTMPPATH}" echo "解压文件到服务器:${SERTMPPATH}" eval SSHEXEC " unzip ${SERTMPPATH}/output.zip -d ${SERTMPPATH}" echo "停止服务器上的docker容器:rstone-web-nuxt3" eval SSHEXEC "sudo docker stop rstone-web-nuxt3" echo "拷贝文件到服务器:/docker-data/rstone-web-nuxt3/app" eval SSHEXEC "sudo rm -rf /docker-data/rstone-web-nuxt3/app/* " eval SSHEXEC "sudo cp -r ${SERTMPPATH}/.output/* /docker-data/rstone-web-nuxt3/app/" echo "启动服务器上的docker容器:rstone-web-nuxt3" eval SSHEXEC "sudo docker start rstone-web-nuxt3" echo "删除服务器上临时目录:${SERTMPPATH}" SSHEXEC "yes | sudo rm -rf ${SERTMPPATH}" echo "发布完成"执行
生成项目: npm run build
执行部署脚本: ./sh/deploy.sh