Docker pull - 从 Gitlab 构建并推送到 Heroku CI

Docker pull - build and push to Heroku from Gitlab CI

我是 运行 Heroku 上 Docker 容器中的 Django 应用程序。 (容器是安装几个额外驱动程序所必需的。)我正在将图像从 gitlab CI 推送到 gitlab-ci.yml 文件中。我的问题是构建图像需要一段时间。那是因为gitlab没有图片的缓存。当我首先从 Heroku 拉取图像时,它似乎被 gitlab 忽略了。我的 .gitlab-ci.yml 文件如下所示:

image: docker:latest
services:
  - docker:dind

variables:
  DOCKER_DRIVER: overlay

stages:
  - build

docker-build:
  stage: build
  script:
  - docker login -u _ -p $HEROKU_TOKEN registry.heroku.com 
  - docker pull registry.heroku.com/xxx/web
  - docker build . -f Dockerfile --iidfile imageid.txt -t registry.heroku.com/xxx/web 
  - docker push registry.heroku.com/xxx/web

代码运行良好,但构建需要一些时间,因为它没有缓存。谁能帮我加快部署速度?谢谢!

根据您的 Gitlab 设置,Ci 运行ner 可能会 运行 直接在主机或分布式环境中。在后一种情况下,Gitlab 文档提到在构建 docker 图像时使用 —from-cache 选项: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#using-docker-caching

本质上,它将从 Heroku docker 注册表中提取正在构建的最新版本的图像,并使用它仅构建在更新后的图像上发生变化的层。

为了更新 docker 注册表上的最新标签并在下一次构建中使用最新的图像版本作为缓存,您可以在将构建的图像推回之前用其版本和“最新”标记您构建的图像到注册表。