Docker :: Dockerfile问题 – 目标文件夹不可用

我有一个春季启动项目,并试图在circleci持续集成服务器上使用Docker文件构build项目。

问题是,我只有我的github回购我的源代码; 没有目标目录或jar文件。 我的Dockerfile无法获得最终的工件(将应用程序打包成jar)。

请检查Docker文件并提出一个前进的方向。

FROM java:8 EXPOSE 8090 VOLUME /tmp ADD target/spring-boot-rest-0.3.0.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"] 

你需要以某种方式打包一个jar来build立你的docker镜像。

您可以在您的dockerfile中安装maven,并在构build容器时构build您的项目。 这相当于使其他答案中描述的步骤自动化。

下面的例子假设你的java源代码位于/ code目录下,你的maven包目标生成一个名为target / spring-boot-rest-0.3.0.jar的jar:

 FROM java:8 EXPOSE 8090 VOLUME /tmp WORKDIR /code RUN apt-get update RUN apt-get install -y maven ADD pom.xml /code/pom.xml RUN ["mvn", "dependency:resolve"] RUN ["mvn", "verify"] # Adding source, compile and package into a fat jar ADD src /code/src RUN ["mvn", "package"] ADD target/spring-boot-rest-0.3.0.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"] 

然而,这似乎并不是大多数java人所做的(尽pipe这是你如何容纳一个节点或一个python应用程序)。

人们似乎用mavenbuild立docker图像。 circl.ci支持maven构build,所以这可能是你应该做的。 这是我使用的插件。有一堆:

https://github.com/spotify/docker-maven-plugin/blob/master/README.md

一旦你有你的pom.xml文件configuration你会指示Circl.ci创build你的docker文件,像这样的命令:

 mvn clean package docker:build 

这个过程将是你使用的任何插件。

构build应用程序

首先,您需要使用Maven,Gradle等构build应用程序。这将在您的目标目录中生成一个Jar文件。

例:

 mvn clean package 

构buildDocker镜像

接下来,您将构buildDocker Image,它将使用上一步中生成的Jar文件。 确保你指定给Jar文件的path是相对于你的Dockerfile的位置( 这很重要!

例:

 docker build -t example-company/example-image . 

如果您仍然有问题,请分享任何错误日志或GitHub回购链接。