我正在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
代码可以正常工作,但是由于没有缓存,因此只花了一些时间即可构建。谁能帮助我加快部署速度?谢谢!
答案 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注册表上的最新标签,并在下一个版本中使用最新的映像版本作为缓存,您可以在将生成的映像推送回注册表之前,同时用其版本和“最新”标记生成的映像。