舊部署方式是在 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