我一直試圖圍繞我公司以前撰寫的一些舊 CI/CD 腳本來部署一些應用程式。gitlab 管道有幾個階段,如 .gitlab-ci.yml 檔案的開頭所示:
image: docker:stable
variables:
DOCKER_DRIVER: overlay2
CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_API: $CI_REGISTRY_IMAGE/career_api:latest
CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_APP: $CI_REGISTRY_IMAGE/career_app:latest
CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP: $CI_REGISTRY_IMAGE/career_dev_app:latest
CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_API: $CI_REGISTRY_IMAGE/career_dev_api:latest
# from https://storage.googleapis.com/kubernetes-release/release/stable.txt
K8S_STABLE_VERSION_URL: https://storage.googleapis.com/kubernetes-release/release/v1.18.4/bin/linux/amd64/kubectl
stages:
- prebuild
- test
- transform
- build
- deploy
然后,稍后,該檔案為 DEV 和 MASTER 分支指定所有這些階段。具體來說,我在開發分支的預構建階段無法理解腳本:
prebuild_dev:
stage: prebuild
extends: .prebuildreq
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP || true
- docker build -f Dockerfile --pull -t $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP --cache-from $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP .
- docker push $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP
only:
refs:
- dev
tags:
- testcicd
我現在看到的是 gitlab runner 作為 docker 容器運行?(由檔案開頭的image:dockerand 表示DOCKER_DRIVER:overlay2)。然后,在預構建階段,它執行 4 個步驟:
- 使用預定義的變數 $CI_REGISTRY_USER、$CI_REGISTRY_PASSWORD 和 $CI_REGISTRY 登錄到容器注冊表。
- 從此注冊表中提取 CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP。第一個問題:什么是|| 真的在這里嗎?
- 構建一個 dockerfile 還要拉 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP?第二個問題:這條線發生了什么?
- 將鏡像(拉取的還是構建的?)推回容器注冊表
一些幫助理解這一點將不勝感激。
uj5u.com熱心網友回復:
- 搬運工拉 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP || 真的
我假設不是 100% 確定,如果 docker pull 影像不存在,則不會失敗命令。
問題:1
docker build -f Dockerfile --pull -t $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP --cache-from $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP 。
Dockerbuild --pull總是為基礎鏡像獲取指定的鏡像摘要。而不是使用本地版本。
將其視為您在 Build Jenkins 機器上可用的基本映像,但它不會再次使用和拉取。
注意:--pull --no-cache是標志,您不會傳遞任何值。
就像我們用docker -tordocker -p
問題2
docker build -f Dockerfile --pull -t $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP --cache-from $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP 。
$CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP在用名稱標記影像之后-t,沒有拉影像。
問題:3
將鏡像(拉取的還是構建的?)推回容器注冊表
構建一個,因為你有標簽影像 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/406544.html
標籤:
