为什么这个 docker 镜像会返回此错误:无法访问 jarfile /home/server.jar


FROM "this line works but cant show code"
RUN yum install -y java-1.8.0-openjdk.x86_64  && yum clean all
COPY /resources/accounts.txt /home/resources/accounts.txt
COPY elk_casino_server /home/elk_casino_server
CMD ["jar","cvmf","/home/elk_casino_server/src/META-INF/MANIFEST.MF","/home/server.jar","/home/elk_casino_server/src/Main.class"]
CMD ["java","-jar","/home/server.jar"]

请花更多时间正确格式化代码片段,并确保提出明确的问题。

Dockerfile使用COPY指令将两个资源复制到容器映像中:

  1. /resources/accounts.txt(在图像中可用/home/resources/accounts.txt)
  2. /elk_casino_server(在图像中可用/home/elk_casino_server)

不幸的是,您的CMD指令正在尝试执行非常不同的东西。只能定义一条命令指令,并且接受后者,即:

CMD ["java","-jar","/home/server.jar"]

任何时候都不会/home/server.jar复制到容器映像中。

char 命令的参数顺序似乎是错误的。manifest-addition应该在jar-file之后,而不是在它之前。

jar cfm jar-file manifest-addition input-file(s)

请参见: 在 JAR 文件中打包程序:修改清单文件


另外:如果有多个CMD,最后一个将覆盖其他。由于我认为您想在构建时打包罐子,因此RUN可能是更好的选择。


这两点结合起来:

RUN jar cvmf /home/server.jar /home/elk_casino_server/src/META-INF/MANIFEST.MF /home/elk_casino_server/src/Main.class

最新更新