【发布时间】:2020-05-25 08:13:14
【问题描述】:
我在 Docker 容器中运行 JAR。我的应用程序的功能是连接到数据库并获取记录并将其输出到名为报告的文件夹中的 .csv 文件。
我的 src 文件夹和报告文件夹都在同一个目录中。这意味着我可以像下面这样写入文件。
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);
当我在本地运行程序时,这工作正常。我构建项目并将其捆绑为 JAR 文件。
我创建了一个包含其他相关步骤和以下步骤的 dockerfile(在我的 JAR 将被复制的文件夹中创建一个名为 reports 的文件夹)
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 镜像构建成功,数据库连接成功,并且在运行时尝试写入 csv 文件时,应用程序抛出异常,指出它找不到指定的文件夹/文件(FileNotFound 异常)。
我在这里做错了什么?
以下是在寻找解决方案时遇到的其他问题。
捆绑应用程序会保留项目结构吗? (因为我需要在 docker 容器中手动创建一个名为 reports 的文件夹) 我是否需要以任何方式为创建的文件夹(报告)提供权限? (我在这里做了)
【问题讨论】:
标签: java docker jar dockerfile filenotfoundexception