为什么在 gitlab-ci 中构建图像之前先拉取 docker 图像?
Why pull docker image before building it in gitlab-ci?
我正在学习 GitLab-ci 有几件事让我很困惑。
所以这是我在谷歌搜索时发现的构建工作:
.build:
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login --username $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
script:
- docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest || true
- docker build --ssh default --cache-from $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest --build-arg BUILDKIT_INLINE_CACHE=1 --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA .
- docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest
stage: build
image: docker:stable
services:
- docker:dind
needs: []
为什么在拉取建筑图像并通过管道设置为 true 之前?我想它与缓存有关,但我不确定为什么要使用 pipe to true。
此外,--ssh default 和 BUILDKIT 的目的是什么?
您应该拉取图像以利用缓存层,这样您就不会不必要地再次构建层。这会导致构建速度更快,拉取新映像的人员更新速度更快,并且可以更有效地使用容器注册表中的存储。
您可以在 GitLab 文档中阅读更多相关信息:Make Docker-in-Docker builds faster with Docker layer caching
对于您的其他问题:
关于 --ssh default
:请参阅 docker documentation on this。
关于 BUILDKIT,简而言之,可以实现更快、更高效的构建。
我正在学习 GitLab-ci 有几件事让我很困惑。 所以这是我在谷歌搜索时发现的构建工作:
.build:
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login --username $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
script:
- docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest || true
- docker build --ssh default --cache-from $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest --build-arg BUILDKIT_INLINE_CACHE=1 --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA .
- docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest
stage: build
image: docker:stable
services:
- docker:dind
needs: []
为什么在拉取建筑图像并通过管道设置为 true 之前?我想它与缓存有关,但我不确定为什么要使用 pipe to true。
此外,--ssh default 和 BUILDKIT 的目的是什么?
您应该拉取图像以利用缓存层,这样您就不会不必要地再次构建层。这会导致构建速度更快,拉取新映像的人员更新速度更快,并且可以更有效地使用容器注册表中的存储。
您可以在 GitLab 文档中阅读更多相关信息:Make Docker-in-Docker builds faster with Docker layer caching
对于您的其他问题:
关于 --ssh default
:请参阅 docker documentation on this。
关于 BUILDKIT,简而言之,可以实现更快、更高效的构建。