我是Docker的新手,但拥有一个Java Web应用程序项目,我的Maven构建可以生成并安装Docker镜像。即在容器中安装Docker以供GitLab使用CI构建
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
我正在使用Spotify的Maven插件来构建这个,我就可以使用部署到仓库:
mvn docker:push
伟大的工程。 不过:我使用GitLab为CI,和我.gitlab-ci.yml
文件包含:
image: maven:3.3.9-jdk-8
build:
script: "mvn clean install && mvn docker:push"
这几乎工程,但由于码头工人没有在我的容器它运行的版本安装失败:
[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的和多克尔预建的形象,但我没有尝试配置码头工人作为一种服务:
services:
- docker:1.13-rc
但结果是一样的 - 这似乎服务意味着作为外部服务使用,其连接到可以是,但不会立即安装在同一容器内。
我应该怎么去更新我的.yml
文件,以便GitLab构建可以构建并推送Docker镜像?
这是超级有帮助本,感谢您的澄清 - 我给事物的快速旋转,让你知道如何去。 –
这也是我提出的解决方案。不过,我会有兴趣看到一个适用于docker maven插件的解决方案。 – rolve
@rolve这当然是可能的,但更多的参与。你必须做的是有一个既有'mvn'又有'docker'的图像。我会看看每个图像的Dockerfiles,以便创建适合您的目的的另一个图像。 – Ben