Не удается подключиться к демону docker во время работы плагина Maven jib в Gitlab CI - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать образ docker с моим приложением в непрерывной интеграции Gitlab с помощью плагина jib Maven, но я не могу подключить плагин к демону docker с помощью dind (docker - in- docker) сервис. В настоящее время я использую эту конфигурацию в моем файле gitlab-ci.yml:

deploy:mvn:
  image: maven:3.6.3-jdk-8-openj9
  stage: deploy
  services:
    - docker:dind
  script:
    - mvn compile jib:dockerBuild

Это ошибка, которую я получаю:

[ОШИБКА] Не удалось выполнить цель com. google.cloud.tools:jib-maven-plugin:0.9.11:dockerBuild (default-cli) в проекте my-application: сбой при сборке с демоном Docker, возможно, вам следует убедиться, что установлен Docker и правильно привилегии для его запуска -> [Справка 1]


ОБНОВЛЕНИЕ

Я обновил до 2.2.0, и он работает локально. Ранее я добавил команду docker images, и плагин, похоже, не может найти команду docker в Gitlab CI:

$ docker images && mvn compile jib: dockerBuild / bin / bash: строка 97: docker: команда не найдена

Это конфигурация для плагина кливера:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.2.0</version>
    <configuration>
        <from>
            <image>adoptopenjdk/openjdk11:alpine-jre</image>
        </from>
        <to>
            <image>my-application:latest</image>
        </to>
        <container>
            <entrypoint>
                <shell>sh</shell>
                <option>-c</option>
                <arg>chmod +x /entrypoint.sh &amp;&amp; sync &amp;&amp; /entrypoint.sh</arg>
            </entrypoint>
            <ports>
                <port>8080</port>
            </ports>
            <environment>
                <SPRING_OUTPUT_ANSI_ENABLED>ALWAYS</SPRING_OUTPUT_ANSI_ENABLED>
                <JHIPSTER_SLEEP>0</JHIPSTER_SLEEP>
            </environment>
            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
        </container>
    </configuration>
</plugin>

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

плагин, похоже, не может найти команду docker в Gitlab CI:

Нет, не Jib, а /bin/bash не может найти docker команда. Даже перед использованием Jib у вас нет docker доступных. Внимательно посмотрите на сообщение об ошибке.

$ docker images && mvn compile jib:dockerBuild /bin/bash: line 97: docker: command not found

Например, на моем Linux, если я попробую команду foo, которая не существует в сценарии оболочки, она выдаст то же сообщение .

$ ./a.sh
./a.sh: line 4: foo: command not found

Следовательно, следующая команда без mvn завершится ошибкой с той же ошибкой.

script:
  - docker images

Это доказывает, что либо docker не существует во время выполнения GitLab или нет в переменной среды PATH.


ОБНОВЛЕНИЕ

Обновление моего ответа, поскольку вы ответили , что вы сейчас используйте jib:build вместо jib:dockerBuild.

Если вы используете jib:build, вам даже не понадобится Docker. Jib не требует Docker при создании и отправке изображения в удаленный реестр с jib:build. Поэтому вы можете полностью забыть о настройке Docker и удалить docker:dind и export DOCKER_HOST:

mvn compile jib:build -Djib.to.auth.username=$DOCKER_REGISTRY_USER -Djib.to.auth.password=$DOCKER_REGISTRY_PWD

0 голосов
/ 21 апреля 2020

Наконец, это конфигурация, с которой я работал:

services:
    - docker:dind


deploy:mvn:
    image: maven:3.6.3-jdk-8-openj9
    stage: deploy
    script:
        - export DOCKER_HOST=tcp://docker:2375
        - mvn compile jib:build -Djib.to.auth.username=$DOCKER_REGISTRY_USER -Djib.to.auth.password=$DOCKER_REGISTRY_PWD
    only:
        - tags

Помимо использования службы Docker in Docker мне нужно было установить sh переменную среды DOCKER_HOST, а также передать учетные данные для моей команды mvn jib:build. Я сохранил учетные данные в настройках CI, как переменные среды. Спасибо @Chanseok Oh за помощь.

См. Также:

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