Настройка прокси для службы Docker Dind - PullRequest
0 голосов
/ 31 марта 2020

Я использую конвейер Gitlab CI / CD и пытаюсь заставить работу publi sh работать.
Моя сеть защищена политикой компании, поэтому мне нужно использовать Proxy. У меня есть настройки прокси для моего Docker. И это работает хорошо, пока docker build работа не будет выполнена.

Моя работа publi sh выглядит следующим образом:

  publish_test:
  stage: publish
  image: docker:19.03.1
  only:
    - test
  services:
    - docker:19.03.1-dind
  variables:
    IMAGE: ${IMAGE}
  before_script:
    - mkdir tmp
    - cp docker/Dockerfile build/libs/backend_v2-*.jar tmp
    - cd tmp
    - echo ${CI_REGISTRY_PASSWORD} | docker login ${CI_REGISTRY} -u ${CI_REGISTRY_USER} --password-stdin
  script:
    - docker pull ${IMAGE} || true
    - docker tag ${IMAGE} ${IMAGE}-backup || true
    - docker push ${IMAGE}-backup || true
    - echo $CI_REGISTRY
    - docker build -t ${IMAGE} .
    - docker push ${IMAGE}
  cache:
    key: ${CI_COMMIT_REF_NAME}
    policy: pull
    paths:
      - build/

Проблема здесь: docker build -t ${IMAGE} .
Он не может вытянуть Docker изображение из-за ошибки соединения:

 Step 1/4 : FROM azul/zulu-openjdk-alpine:11
 Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
 ERROR: Job failed: exit code 1

До сих пор я пробовал несколько решений, ни одно из которых не сработало для меня:
1. Попытался добавить прокси-переменные в переменные Gitlab и поместить прокси-конфиги в эту работу следующим образом:

- export http_proxy=${HTTP_PROXY};
- export https_proxy=${HTTP_PROXY};
- export no_proxy=${NO_PROXY};
Пытался использовать build-arg параметры:

docker build --progress --build-arg ${HTTP_PROXY} --build-arg ${HTTPS_PROXY} --build-arg ${NO_PROXY} -t ${IMAGE} .

Я нашел свой случай в Gitlab Docs - https://docs.gitlab.com/runner/configuration/proxy.html#proxy -settings-when-using-dind-service . Пытался следовать инструкциям там, это не сработало.

Как я могу заставить его работать на меня? Мне нужно настроить параметры прокси для этого Docker задания сборки, чтобы оно могло вытянуть необходимый Docker образ. Любая помощь приветствуется.

1 Ответ

1 голос
/ 31 марта 2020
  1. Вам не нужно повторно экспортировать env, настроенные как переменные GitLab. Добавьте скрипт env | grep proxy или env | grep PROXY в свой конвейер, чтобы увидеть, что envs присутствуют.
  2. Предполагая, что ваши прокси envs выглядят так: HTTP_PROXY=http://127.0.0.1:3001 команда сборки должна быть docker build --progress --build-arg http_proxy=${HTTP_PROXY} ...

Похоже, вы использовали неправильно построенные аргументы --build-arg ${HTTP_PROXY} должно быть --build-arg http_proxy=${HTTP_PROXY} и одинаково для https_proxy и no_proxy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...