gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:34:02 24 4
gpt4 key购买 nike

我有一个 Spring Boot 项目,并尝试在 Circleci 持续集成服务器上使用 Docker 文件构建该项目。

问题是我的 github 存储库中只有源代码;没有目标目录或 jar 文件。我的 Dockerfile 无法获取最终 Artifact (将应用程序打包到 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 来构建您的 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

无论您使用哪个插件,该过程都会相似。

关于java - Docker::Dockerfile 问题 - 目标文件夹不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37667002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com