旧部署方式是在 git 的推送回调中执行当前的项目的部署, 因为前段项目存安装依赖, 编译打包等步骤, 直接在当前项目从新部署会致使当前服务挂掉或出现问题.
时间能持续好几分种, 极其影响体验. 所以准备使用 docker 来优化服务部署.nginx
#!/bin/bash set -ex # 进入docker目录 cd /root/workspace/docker/note # 更新代码 安装依赖 编译 git reset --hard HEAD git pull origin master npm install npm run build # 生成docker tag=note:${BUILD_NUMBER} # 生成最新镜像 docker build --no-cache -t ${tag} . # 生成使用镜像 docker build -t note . # 删除测试容器 exist=`docker container ls -a | grep note-test | wc -l` if [ "$exist" != "0" ]; then docker container rm -f note-test fi # 启动测试容器 docker run -d --name note-test -p 3201:3200 note # 暂时 10s 确保服务器已启动完毕 sleep 10 # 测试容器 curl http://127.0.0.1:3201 >> /dev/null # 删除测试容器 docker container rm -f note-test # 删除正式容器 exist=`docker container ls -a | grep note-run | wc -l` if [ "$exist" != "0" ]; then docker container rm -f note-run fi # 启动正式容器 docker run -d --name note-run -p 3200:3200 note
原文git