需要帮助理解 gitlab docker 脚本
Need help understanding gitlab docker script
我一直在努力思考我公司以前编写的一些旧 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 b运行ch 指定所有这些阶段。具体来说,我在开发 b运行ch:
的预构建阶段无法理解脚本
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:docker
和 DOCKER_DRIVER:overlay2
表示)。然后,在预构建阶段它执行 4 个步骤:
- 使用预定义变量 $CI_REGISTRY_USER、$CI_REGISTRY_PASSWORD 和 $CI_REGISTRY.
登录到容器注册表
- 从此注册表中提取 CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP。 第一个问题:||是什么?真的吗?
- 构建一个 docker 文件还拉取 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP? 第二个问题:这一行发生了什么?
- 将镜像(拉取的还是构建的?)推回容器注册表
如果能帮助理解这一点,我们将不胜感激。
- docker pull $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP || true
我假设不是 100% 确定,如果 docker 拉取图像不存在,则命令不会失败。
问题:1
docker build -f Dockerfile --pull -t
$CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP --cache-from
$CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP .
Docker build --pull
始终为基本图像获取指定的图像摘要。而不是使用本地版本。
将它视为您在 Build Jenkin 机器上可用的基础映像,但它不会再次使用和拉取。
注意:--pull --no-cache
是标志,您不会用它传递任何值。
就像我们对 docker -t
或 docker -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
push image (The pulled one or the built one?) back to container
registry
建立一个,因为你有带 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP
的标签图像
我一直在努力思考我公司以前编写的一些旧 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 b运行ch 指定所有这些阶段。具体来说,我在开发 b运行ch:
的预构建阶段无法理解脚本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:docker
和 DOCKER_DRIVER:overlay2
表示)。然后,在预构建阶段它执行 4 个步骤:
- 使用预定义变量 $CI_REGISTRY_USER、$CI_REGISTRY_PASSWORD 和 $CI_REGISTRY. 登录到容器注册表
- 从此注册表中提取 CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP。 第一个问题:||是什么?真的吗?
- 构建一个 docker 文件还拉取 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP? 第二个问题:这一行发生了什么?
- 将镜像(拉取的还是构建的?)推回容器注册表
如果能帮助理解这一点,我们将不胜感激。
- docker pull $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP || true
我假设不是 100% 确定,如果 docker 拉取图像不存在,则命令不会失败。
问题:1
docker build -f Dockerfile --pull -t $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP --cache-from $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP .
Docker build --pull
始终为基本图像获取指定的图像摘要。而不是使用本地版本。
将它视为您在 Build Jenkin 机器上可用的基础映像,但它不会再次使用和拉取。
注意:--pull --no-cache
是标志,您不会用它传递任何值。
就像我们对 docker -t
或 docker -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
push image (The pulled one or the built one?) back to container registry
建立一个,因为你有带 $CONTAINER_RELEASE_IMAGE_CAREER_GROWTH_DEV_APP