2016-12-14 48 views
1

首先感謝您的時間。我試着去運行裏面dockerfile Maven的命令:Dockerfile中的Maven生命週期

# Base container contains maven, jdk on ubuntu 
FROM maven:3-jdk-8 
# copy my build config pom file to container 
ADD pom.xml /app/ 
# copy the source file directory to the container 
ADD src/ /app/src/ 
# move the app directory inside container to perform mvn buill 
WORKDIR /app/ 
RUN ["mvn", "dependency:resolve"] 
RUN ["mvn", "verify"] 
# resolve dependency offline as suggested by Nicolas 
#RUN mvn dependency:go-offline 
# build by using maven 
RUN mvn package 

但是我有與代理問題:

$ docker build -t mavenimagen . 
Sending build context to Docker daemon 124.9 kB 
Step 1 : FROM maven:3-jdk-8 
---> b2ef69e414f5 
Step 2 : ADD pom.xml /app/ 
---> Using cache 
---> 57e5b52fe34b 
Step 3 : ADD src/ /app/src/ 
---> Using cache 
---> ace1a117cb4f 
Step 4 : WORKDIR /app/ 
---> Using cache 
---> da544b2298a1 
Step 5 : RUN mvn dependency:resolve 
---> Running in 26258aec0093 
[INFO] Scanning for projects... 
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom 
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-jar-plugin:2.4: Plugin org.apache.maven.plugins:maven-jar-plugin:2.4 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-jar-plugin:jar:2.4 
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-shade-plugin/2.1/maven-shade-plugin-2.1.pom 
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-shade-plugin:2.1: Plugin org.apache.maven.plugins:maven-shade-plugin:2.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-shade-plugin:jar:2.1 
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom 
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5 
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom 

我想,我必須補充的settings.xml,但我不知道如果我有添加到我的項目或其他目錄的根目錄中。

Greettings!

回答

1

你還沒有發佈確切的代理問題,但無論它是什麼,你可能必須把你自定義的settings.xml文件(ADD settings.xml /app/),然後與Maven(RUN mvn -s settings.xml package)一起使用。

如果它將被多次調用,我建議將settings.xml設置爲~/.m2/,以便在每個Maven調用中默認使用它。

+0

我想你的建議,但我沒有看到結果。順便說一句,我修改了我的問題,我用代理添加了我的問題。感謝您的回答和您的時間:) –

+0

不,我看到哪個Maven電話導致問題。它是'運行mvn依賴:解析'。如果您將其更改爲'運行mvn -s settings.xml dependency:resolve',它將會正常。或者,如果它現在不止一個,就按我的建議,把'settings.xml'文件放到'〜/ .m2 /'中。 –

0

問題解決了,問題的代理。

我不得不添加此行的dockerfile

ADD settings.xml /root/.m2/settings.xml 

謝謝!

0

這是你正在試圖建立唯一的應用程序?如果不是,我會建議構建兩個圖像,如下所示:

  • Maven構建圖像:包含java和maven以及您在〜/ .m2中的設置xml。該圖像具有源代碼的卷裝,因此可以多次使用,例如在您的CI/CD管道中。
  • 應用圖片:這張圖片只有Java來運行應用程序,可用於即使在生產環境中運行的容器。

HTH!

+0

感謝您的推薦!這是如此有幫助:) –