我是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