java - 在 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 中创建。
解决方案
几件事:
- 您需要将第 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"]
推荐阅读
- android - 错误:找不到符号变量 db
- typescript - TypeScript 是否可以实现功能性承诺链?
- reactjs - 酶浅渲染成分未定义
- javascript - Javascript字符串;将“NameSubname”变成“Name Subname”
- php - 使用 PHP 将 JSON 对象中的元素插入数据库
- java - 避免代码重复类
- c++ - Borland C++ Builder LoadFromResourceID 导致 EAccess 冲突
- android - Recyclerview indicates that reaches the last item
- python - 多个大型数组的内存问题
- owl - 在 Protege 中使用 SWRL 创建新的班级和个人