【问题标题】:Docker :: Issue with Dockerfile - target folder not availableDocker :: Dockerfile 问题 - 目标文件夹不可用
【发布时间】:2016-06-06 21:15:27
【问题描述】:

我有一个 spring boot 项目,并尝试在 circleci 持续集成服务器上使用 Docker 文件构建项目。

问题是我的 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"]

【问题讨论】:

  • 是的,我正在使用 circleci 构建项目。

标签: java maven docker spring-boot circleci


【解决方案1】:

您需要以某种方式打包一个 jar 来构建您的 docker 映像。

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

以下示例假设您的 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 人的做法(尽管这是您将节点或 python 应用程序容器化的方式)。

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

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

配置好 pom.xml 文件后,您将指示 Circl.ci 使用如下命令创建 docker 文件:

mvn clean package docker:build

该过程将与您使用的任何插件相似。

【讨论】:

  • 知道如何在 gradle 的情况下实现这一点吗?
  • 只需将 mvn 替换为 gradle 即可!
  • 我确实在阅读帖子后尝试过。有用。不管怎么说,还是要谢谢你。 :D
【解决方案2】:

构建应用程序

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

例子:

mvn clean package

构建 Docker 镜像

接下来,您将构建 Docker 映像,该映像将使用上一步中生成的 Jar 文件。确保您为 Jar 文件指定的路径相对于 Dockerfile 的位置(这很重要!

例子:

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

如果您仍有问题,请分享任何错误日志或 GitHub 存储库链接。

【讨论】:

猜你喜欢
  • 2018-04-24
  • 2021-06-14
  • 2018-01-26
  • 2020-11-17
  • 2019-05-05
  • 2011-07-02
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
相关资源
最近更新 更多