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,但我不知道是否必须添加在我的项目或另一个目录的根目录。

问候!

您没有发布确切的代理问题,但无论如何,您可能必须将自定义的settings.xml文件( ADD settings.xml /app/ADD settings.xml /app/到Maven( RUN mvn -s settings.xml package )。

如果它~/.m2/调用,我build议把settings.xml~/.m2/这样每个Maven调用都会默认使用它。

这是您正在尝试构build的唯一应用程序吗? 如果不是,我会build议build立两个图像如下:

  • Maven构build图像:在〜/ .m2中包含java和maven以及您的设置xml。 该图像具有源代码的卷装,因此可以多次使用,例如在CI / CDpipe道中。
  • 应用程序图像:此图像只有java才能运行应用程序,甚至可以在生产环境中运行容器。

HTH!

问题解决了,问题就是代理。

我不得不在docker文件中添加这一行

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

谢谢 !!