iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
DevOps

從 0 到 1 的 DevOps 執行日記 - 全方位平台實踐手冊系列 第 22

【Day-22】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)- 實戰(3)

昨天我們大致上描述了在自己的環境中,編譯好源代碼,變且包裝成 Container``的過程與方法!

今天我們來解決在客戶環境中更新容器

前面有稍微提到,理論上我們已經做好了容器,並且也貼上了 Tag ,應該只要在客戶端更新容器就可以了吧!?

echo "Stop Container"
docker-compose stop

echo "Remove Container"
docker-compose rm -f

echo "Remove Volume"
docker volume rm volume -f

echo "Update Backend"
git pull 

export GIT_REV_COUNT=`git rev-parse HEAD`
echo "Set up IMAGE VERSION is ${GIT_REV_COUNT}"

DIR="./frontend"

echo "Update Frontend"
if [ -d "$DIR" ] ; then
    echo "Exist Dir"
    cd frontend
    git pull
else
    echo "Not Exist Dir"
    git clone
fi

export GIT_REV_COUNT_FD=`git rev-parse HEAD`
echo "Set up IMAGE VERSION is ${GIT_REV_COUNT_FD}"

cd ..

echo "reload docker compose container"
docker-compose up -d --remove-orphans --force-recreate

echo "delete obsolete image"
docker image prune -f

最後我們把它包裝成了一個 .sh,檔案,如此一來在更新系統時,都只要下sh update.sh 就可以更新了!

docker-compose stop
首先我們先停止了容器!

docker-compose rm -f
接著我們刪除容器!

docker volume rm volume -f
因為我們有用到通用的掛載,這個我們也移除!

git pull
接下來執行,取得最新版本號

export GIT_REV_COUNT=git rev-parse HEAD
echo "Set up IMAGE VERSION is ${GIT_REV_COUNT}"

這邊就是設置環境變數與版本號碼,我們只要在 Docker-compose.yaml 中使用就可以了!
像是這樣
image: registry.gitlab.com/xxx/xxx/image:${GIT_REV_COUNT}

docker-compose up -d --remove-orphans --force-recreate
然後再將容器啟動就可以了!

如此一來我們就完成了,在不能直接操作客戶環境的情況下,簡化了更新與部署,並且讓開發人員可以很簡單的更新系統!

到這邊為止,我們的自動化旅程要告一段落了,接下來我們來分享相關知識管理的項目!


上一篇
【Day-21】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(實作篇)- 實戰(2)
下一篇
【Day-23】我們是怎麼開始的?:一間傳統軟體公司從 0 開始建置的 DevOps 文化(知識管理篇)- 知識管理(1)
系列文
從 0 到 1 的 DevOps 執行日記 - 全方位平台實踐手冊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言