首页 > 解决方案 > 在 Docker 容器上部署我的 java 应用程序时,我正在获取路径

问题描述

我从我的应用程序中的一个文件夹中获取文件,当我从 IDE 运行应用程序时它工作正常,当我构建项目并且包装是 jar 时它不包含该文件夹。当我在 docker 中运行应用程序时,它给出了找不到错误文件。

我是 docker 新手,谁能帮帮我。问题是什么?

  FROM adoptopenjdk:14-jre-hotspot
  RUN mkdir /opt/batch-processor \
  && mkdir /opt/batch-processor/data \
  COPY ./target/batch-processor-1.0-SNAPSHOT-jar-with-dependencies.jar /opt/batch-processor
  WORKDIR /opt/batch-processor
  CMD ["java", "-jar", "batch-processor-1.0-SNAPSHOT-jar-with-dependencies.jar"]

我也在添加我的目录结构,谁能告诉我为什么我的数据文件夹没有在 jar 中创建。

在此处输入图像描述

标签: javadockermaven

解决方案


几件事:

  • 您需要将第 2 行拆分为RUN一行和COPY一行,否则将RUN胜过COPY(不受影响):
RUN mkdir /opt/batch-processor && mkdir /opt/batch-processor/data
COPY ./target/batch-processor-1.0-SNAPSHOT-jar-with-dependencies.jar /opt/batch-processor
  • 向上移动WORKDIR,这将创建并更改目录,从而简化事情:
FROM adoptopenjdk:14-jre-hotspot

WORKDIR /opt/batch-processor

RUN mkdir ./data
COPY ./target/batch-processor-1.0-SNAPSHOT-jar-with-dependencies.jar .

CMD ["java", "-jar", "batch-processor-1.0-SNAPSHOT-jar-with-dependencies.jar"]

推荐阅读