我的項目部署方案

系統部署

舊部署方式是在 git 的推送回調中執行當前的項目的部署, 因爲前段項目存安裝依賴, 編譯打包等步驟, 直接在當前項目從新部署會致使當前服務掛掉或出現問題.
時間能持續好幾分種, 極其影響體驗. 所以準備使用 docker 來優化服務部署.nginx

新部署

  1. 在項目庫增長代碼推送 Hook, 地址爲 Jenkins 內置的回調 url.
  2. 在 Jenkins 中增長構建任務, 構建腳本以下:
#!/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

知識

  • jenkins 自動化構建
  • docker 容器技術

TODO

  • nginx 負載均衡
  • k8s 集羣

原文git

相關文章
相關標籤/搜索