Использование fabric8 docker-maven-plugin для создания образов на удаленном Docker-демоне - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь использовать docker-maven-plugin fabric8 для создания образов докеров в моем gitlab ci pipe.

Фон:

Мой этап создания изображения в gitlab-ci.yml выглядит следующим образом:

build_image:
  stage: build
  image: $JAVA_IMAGE
  services:
    - name: docker:dind
      alias: docker-build
  script:
    - ./mvnw docker:build
  allow_failure: true
  except: *nobuild
  tags:
    - autoscaler

Мой pom имеет

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.30.0</version>
    <configuration>
        <!-- the hostname should be the same as the service alias specified in the gitlab ci file-->
        <dockerHost>tcp://docker-build:2375</dockerHost>
        <images>
            <image>
                <name>my-image</name>
                <build>
                    <contextDir>${project.basedir}/path/where/Dockerfile/lives</contextDir>
                    <filter>false</filter>
                    <tags>
                        <tag>latest</tag>
                        <tag>${project.version}</tag>
                    </tags>
                </build>
            </image>
        </images>
    </configuration>
</plugin>

И мой Dockerfile содержит

COPY ./some/directory/ /destination/path/within/image

Но сборка завершается с ошибкой

41014 [ERROR] DOCKER> Unable to build image [my-image] : "COPY failed: stat /var/lib/docker/tmp/docker-builder785340074/some/directory/: no such file or directory"  ["COPY failed: stat /var/lib/docker/tmp/docker-builder785340074/some/directory/: no such file or directory" ]

Вопрос:

Кажется, проблема в том, что maven в контейнере, построенном из $JAVA_IMAGE,использует демон docker контейнера docker:dind (на tcp://docker-build:2375) для сборки my-image (как и предполагалось), но контейнер docker:dind не имеет доступа к файлам на контейнере $JAVA_IMAGE на ./some/directory/.Есть ли способ предоставить ему доступ к этим файлам или скопировать эти файлы в контейнер docker:dind?Или есть лучший способ сделать то, что я пытаюсь сделать (сохраняя разделение между образом службы docker:dind и образом сборки $JAVA_IMAGE)?

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