Docker pull - сборка и передача в Heroku из Gitlab CI - PullRequest
0 голосов
/ 24 января 2019

Я запускаю приложение Django на Heroku в контейнере Docker.(Контейнер необходим для установки пары дополнительных драйверов.) Я помещаю образ из файла 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 голосов
/ 24 января 2019

В зависимости от настроек Gitlab, бегунок Ci может работать непосредственно на хосте или в распределенной среде. В последнем случае в документации Gitlab упоминается использование опции -from-cache при создании образов Docker: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#using-docker-caching

По сути, он извлечет последнюю версию образа, создаваемого из реестра док-станции Heroku, и использует его для создания только слоев, которые изменились в обновленном образе.

Чтобы обновить последнюю метку в реестре Docker и использовать самую свежую версию образа в качестве кэша в следующей сборке, вы можете пометить свой встроенный образ как его версией, так и «самой последней», прежде чем отправлять его обратно в реестр.

...