当前位置: 首页 > 知识库问答 >
问题:

在Docker容器上运行JAR时写入文件夹中的文件会导致FileNotFoundException

邹山
2023-03-14

我正在Docker容器中运行一个罐子。我的应用程序的功能是连接到一个数据库,获取记录并将其输出到一个名为Reports的文件夹中的.csv文件中。

String csvFile = "." + File.separator + "reports" + File.separator + "VAS_Report_" + subscriberType +
                df.format(new Date()) + ".csv";

//db connection and result extraction logic
........

CSVWriter csvWriter = new CSVWriter(new FileWriter(csvFile));
csvWriter.writeAll(resultSet, true);

RUN mkdir -p /apps/Consumer/
COPY My-App-1.0.jar /apps/Consumer/

RUN mkdir -p /apps/Consumer/reports
RUN chmod ugo+w /apps/Consumer/reports #giving write permission

绑定应用程序是否保留了项目结构?(因为我需要在docker容器中手动创建一个名为reports的文件夹)我需要以任何方式为创建的文件夹(reports)提供权限吗?(我在这里就是这么做的)

共有1个答案

卫景明
2023-03-14

代替:

RUN mkdir -p /apps/Consumer/
...
RUN mkdir -p /apps/Consumer/reports

使用WORKDIR作为:

WORKDIR /apps/Consumer/
COPY My-App-1.0.jar .
RUN chmod ugo+w /apps/Consumer/reports #giving write permission
 类似资料:
  • 我编写docker文件是为了运行jar文件,而它并没有创建日志文件,请参阅下面的控制台是我的docker文件

  • 我有两个jar文件。第一个只包含接口 在请求的基础上,我试图从中加载我的实现类。jar文件存在于某个文件夹中,在运行时使用URLClassLoader。 课程正在加载 我确信这是由于我使用不同的类加载器来加载类,但是我如何克服类之间的兼容性问题。 同样的代码可以在正常的J2SE环境中工作,但不能在JBoss环境中工作。 如果我的查询不清楚,请让我知道我也可以粘贴源代码。

  • 问题内容: 我使用Java创建了一个Docker映像,并将jar文件复制到该映像中。我的Dockerfile是: 执行以下命令后: 在控制台中,我看到了应用程序的输出,一切都很好。但是当我停止图像时,我不知道如何再次运行图像?当我执行以下命令时: 该应用程序再次运行,但是在我的Dockerfile中,我已经编写了此命令。如何在不使用此命令的情况下运行映像并使应用程序自动运行? 问题答案: 图像和容

  • 问题内容: 我只是想到了一种不那么直截了当的方法: 我可以以某种方式将JAR资源列表转换为内部JAR URL列表,然后可以使用openConnection()打开它。 问题答案: 您使用JarFile打开一个Jar文件。有了它,您可以使用’getEntry(String name)’或’entires’来获取ZipEntry或JarEntry(它们可以看作同一东西)。收到条目后,可以通过调用’ J

  • 将数据帧中的数据写入路径path=rootcontainer/container1“/”fileName df。重新划分(1)。写格式(“com.databricks.spark.csv”)。选项(“标题”、“true”)。选项(“分隔符”,分隔符)。选项(“quote”,“\u0000”)。模式(SaveMode.Overwrite)。保存(路径) 执行上述命令时,除了在root容器/容器1/文

  • 我只需要将构建文件夹中的文件(和子文件夹)复制到..html中。 是我遗漏了什么还是我必须一个一个地复制每个文件?