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

时间:2019-01-24 09:45:23

标签: docker build gitlab push pull

我正在Docker容器中的Heroku上运行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

代码可以正常工作,但是由于没有缓存,因此只花了一些时间即可构建。谁能帮助我加快部署速度?谢谢!

1 个答案:

答案 0 :(得分:1)

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

从本质上说,它将从Heroku docker注册表中提取正在构建的映像的最新版本,并使用它仅构建在更新的映像上已更改的图层。

为了更新docker注册表上的最新标签,并在下一个版本中使用最新的映像版本作为缓存,您可以在将生成的映像推送回注册表之前,同时用其版本和“最新”标记生成的映像。