gpt4 book ai didi

java - 使用 Dockerfile 将 excel (.xls) 文件复制到容器

转载 作者:行者123 更新时间:2023-12-01 06:01:50 25 4
gpt4 key购买 nike

我对 Docker 还很陌生,所以我的问题可能有一个简单的答案。通过我使用一些在线教程创建的 Dockerfile,我成功地将我的 java 项目集成到容器中。现在我想对 .xls 文件执行相同的操作。我已经在现有线程上寻找解决方案,但找不到任何解决方案。

一个类使用 .xls 文件为我的应用服务生成信息。一切都工作得很好(它是一个 Spring 应用程序, postman 和 h2 db 提供了良好的测试)在这种情况下,我的 Dockerfile 看起来像下面的代码主干。我只提供两只“小白鼠”。我尝试通过其类型访问 excel 文件(jar 文件似乎是通过这种方式访问​​的)。我还尝试使用文件名进行复制,因为这看起来更自然。 (尽管 Jar 文件本身似乎并没有引起任何问题。)

FROM openjdk:8-jre

ARG JAR_FILE

COPY ${JAR_FILE} app.jar

COPY ${XLS_FILE} test.xls

ENTRYPOINT ["java","-jar", "-Dserver.port=80" , "-Dprofile=prod", "/app.jar"]
<小时/>
FROM openjdk:8-jre

ARG JAR_FILE

COPY ${JAR_FILE} app.jar

COPY ${TaIlagerplatz_KR} test.xls

ENTRYPOINT ["java","-jar", "-Dserver.port=80" , "-Dprofile=prod", "/app.jar"]

我进行了更多不确定的探索/实验。我有点达到了我的编程极限..:)我发现第一次尝试时出现“无效或损坏的 jar”错误。消息内容如下:

C:\Users\dnorthe\Java Tutorial\RGLVS_BE_Core>docker run test3
Error: Invalid or corrupt jarfile /app.jar

第二个更复杂的错误消息如下:

java.io.FileNotFoundException: build/Data/TaIlagerplatz_KR.xls (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at de.biere.rglvs.artikelstamm.init.SeedDataArtikelExcel.read(SeedDataArtikelExcel.java:39)
at de.biere.rglvs.artikelstamm.init.SeedDataArtikelExcel.<clinit>(SeedDataArtikelExcel.java:30)
at de.biere.rglvs.artikelstamm.init.DataLoaderArtikel.run(DataLoaderArtikel.java:27)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:794)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at de.biere.rglvs.RglvsApplication.main(RglvsApplication.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
java.io.FileNotFoundException: build/Data/TaIlagerplatz_KR.xls (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at de.biere.rglvs.lager.init.SeedDataLoaderLagerplatzExcel.read(SeedDataLoaderLagerplatzExcel.java:36)
at de.biere.rglvs.lager.init.SeedDataLoaderLagerplatzExcel.<clinit>(SeedDataLoaderLagerplatzExcel.java:27)
at de.biere.rglvs.lager.init.DataLoaderLagerplatz.run(DataLoaderLagerplatz.java:27)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:794)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at de.biere.rglvs.RglvsApplication.main(RglvsApplication.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

还有一些其他 Spring 注入(inject)问题。如果需要,我可以发布整个错误消息(它跨越几页)。我也不确定我是否在该网站上正确发布了代码 - 提前抱歉!!..

最佳答案

对于没有解释的发帖表示歉意。

当前,您的 Dockerfile 将创建目录“app.jar”并将 app.jar 复制到其中。同时,入口点将查找/app.jar,而是查找名为 app.jar 的目录,从而抛出损坏的文件jar 错误。

补救方法是将app.jar直接复制到/

这应该有效。

FROM openjdk:8-jre

ARG JAR_FILE

ARG XLS_FILE

COPY ${JAR_FILE} ${XLS_FILE} /

ENTRYPOINT ["java","-jar", "-Dserver.port=80" , "-Dprofile=prod", "/app.jar"]

关于java - 使用 Dockerfile 将 excel (.xls) 文件复制到容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56233263/

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