我們把 Docker 整合到 Jenkins CI/CD 的步驟,讓 Jenkins 幫我們自動建置專案 Docker Image,這樣我們只要管理好我們的 Dockerfile ,自動化建置、測試、建置Docker Image,最後在上傳到 Google Registry 倉庫.
更新APT
sudo apt update
安裝必要插件
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
安裝 官方 Docker repository
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
增加 Docker repository 到 APT
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
安裝 docker-ce
sudo apt install docker-ce
檢查是否正常取動
sudo systemctl status docker
解決 Jenkins build permission denied
sudo usermod -aG docker jenkins
sudo chmod 777 /var/run/docker.sock
執行 Shell Script
bash prepare.sh
env/bin/py.test --junitxml=pytest_result.xml --cov=ithome_pellok_2018 --cov-report=xml
rm -f ithome_pellok_2018.sqlite
docker build --rm -t ithome_pellok_2018:${BUILD_NUMBER} .
安裝 gcloud
# Create environment variable for correct distribution
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
# Add the Cloud SDK distribution URI as a package source
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk
初始化 gcloud
gcloud init
初始化 gcloud
複製連結到 瀏覽器登入 Google 帳號
複製授權碼到 Concole
選擇專案和資料中心
測試上傳
docker tag ithome_pellok_2018:28 asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:28
gcloud docker -- push asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:28
# 安裝專案環境
bash prepare.sh
# 執行測試
env/bin/py.test --junitxml=pytest_result.xml --cov=ithome_pellok_2018 --cov-report=xml
rm -f ithome_pellok_2018.sqlite
# 建置 Docker
docker build --rm -t ithome_pellok_2018:${BUILD_NUMBER} .
# Doker Image 打標籤
docker tag ithome_pellok_2018:${BUILD_NUMBER} asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER}
# 上傳到 google cloud
gcloud docker -- push asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER}
檢查 Google Registry
在這邊把 Docker 整合到 CI/CD 的流程中,再來就是部署到 Kubernetes 叢集架構.Jenkins 還有 Pipeline 模式,只是還沒有研究,好像也是不錯用,有時間來試試看.
How to Install and Use Docker on Debian 9
Debian 和 Ubuntu 快速入門