Я новичок в Docker, но у меня есть проект веб-приложений Java, для которого моя сборка Maven создает и устанавливает изображение Docker. т.е.Установите Docker в контейнер для использования GitLab CI build
mvn clean install
Производит:
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.gitlab.com/me/myapp 0.0.1-SNAPSHOT-dev 12d69e5ab28b 45 minutes ago 666 MB
Я используя Maven плагин Spotify, чтобы построить это, что я могу затем развернуть в хранилище с помощью:
mvn docker:push
Который прекрасно работает , Однако: Я использую GitLab для CI, и мой файл .gitlab-ci.yml
содержит:
image: maven:3.3.9-jdk-8
build:
script: "mvn clean install && mvn docker:push"
Это почти работает, но терпит неудачу в Docker не установлен в моем контейнере который работает под управлением сборки:
[INFO] Building image registry.gitlab.com/me/myapp
Dec 31, 2016 8:30:45 PM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: No such file or directory
Dec 31, 2016 8:30:45 PM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {}->unix://localhost:80
Dec 31, 2016 8:30:45 PM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: No such file or directory
... (more of the same) ...
Кажется, решение здесь заключается в установке Docker в контейнер. Я не могу найти преднастроенным изображение, которое имеет Java, Maven и докер, но я попробуйте настроить Docker как сервис:
services:
- docker:1.13-rc
Но результат тот же - это, кажется, услуги предназначены для можно использовать в качестве внешних служб, которые могут быть подключены к, но они не установлены сразу в одном контейнере.
Как мне поступить, обновляя файл .yml
, чтобы сборка GitLab могла строить и нажимать изображение Docker?
Это супер полезно Бен, спасибо за разъяснение - Я дам вещи быстрый спин и пусть вы знаете, как она идет , –
Это решение, которое я тоже придумал. Тем не менее, мне было бы интересно увидеть решение, которое работает с плагином docker maven. – rolve
@rolve Это, безусловно, возможно, но более активно. То, что вам нужно сделать, - это изображение, которое имеет как 'mvn', так и' docker'. Я бы посмотрел на Dockerfiles каждого изображения, чтобы создать другое изображение, подходящее для вашей цели. – Ben