докером в gitlab-runner?
Хотелось бы немного ускорить джобу, так как сейчас занимает почти полторы минуты, в основном из-за этого сервиса
build-docker:
stage: Build
image: docker:latest
services:
- name: docker:dind
variables:
DOCKER_TLS_CERTDIR: ""
script:
- export DOCKER_HOST=tcp://docker:2375
- echo $REGISTRY_PASSWORD | docker login -u $REGISTRY_USER --password-stdin
Можно кэширование использовать)
Типа того или можно как-то именно образ docker:dind закешировать? cache: - key: cache-$CI_COMMIT_REF_SLUG paths: - /var/lib/docker
Сперва пуллим результат прошлого билда, билдим, пушим в реджистри гитлаба и в целевой реджистри variables: GITLAB_IMAGE_TAG_BASE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG ECR_DOCKER_IMAGE_NAME: $ECR_PREFIX/$ECR_POSTFIX:$CI_COMMIT_SHORT_SHA GITLAB_BUILDER_IMAGE_TAG: $GITLAB_IMAGE_TAG_BASE-builder GITLAB_RUNNER_IMAGE_TAG: $GITLAB_IMAGE_TAG_BASE-runner script: - echo "Authorize in Gitlab Container Registry" - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - echo "Pulling $GITLAB_BUILDER_IMAGE_TAG from Gitlab Container Registry" - docker pull $GITLAB_BUILDER_IMAGE_TAG - echo "Pulled $GITLAB_BUILDER_IMAGE_TAG from Gitlab Container Registry" - docker build --target builder --cache-from $GITLAB_BUILDER_IMAGE_TAG -t $GITLAB_BUILDER_IMAGE_TAG -f $DOCKERFILE_NAME . - docker push $GITLAB_BUILDER_IMAGE_TAG - echo "Pushed $GITLAB_BUILDER_IMAGE_TAG to Gitlab Container Registry" - docker build --target runner --cache-from $GITLAB_BUILDER_IMAGE_TAG -t $GITLAB_RUNNER_IMAGE_TAG -f $DOCKERFILE_NAME . - docker push $GITLAB_RUNNER_IMAGE_TAG - echo "Pushed $GITLAB_RUNNER_IMAGE_TAG to Gitlab Container Registry" - echo "Authorizing in AWS ECR" - cat config/docker_login | docker login --password-stdin --username AWS $ECR_PREFIX - echo "Tagging $GITLAB_RUNNER_IMAGE_TAG with $ECR_DOCKER_IMAGE_NAME tag" - docker tag $GITLAB_RUNNER_IMAGE_TAG $ECR_DOCKER_IMAGE_NAME - echo "Pushing $ECR_DOCKER_IMAGE_NAME to ECR Registry" - docker push $ECR_DOCKER_IMAGE_NAME - echo "Pushed $ECR_DOCKER_IMAGE_NAME to ECR Registry"
Это стоит в отдельную джобу вынести? Используя docker команды без Docker in Docker получаю такую error: Post "http://docker:2375/v1.24/auth": dial tcp: lookup docker on 8.8.8.8:53: no such host
https://pastebin.com/GdpbGXGt Вот тебе целиком рабочая на шаред раннерах пипелина
Добавил к себе, теперь для всех джоб используется service docker:bind, который пуллится и кешируется в первой самой джобе Это не совсем то, что я хотел... Есть ли способ вообще избежать использование конструкции docker in docker и не использовать docker:bind вовсе?
Обсуждают сегодня