使用Git LFS导致Docker Hub构建的镜像中Java .JAR文件损坏
自从我使用Git LFS将文件上传至GitHub后,Docker Hub构建的Docker镜像中包含损坏的Java .JAR文件。
如果我禁用Git LFS并直接推送Java .JAR文件至Docker Hub,构建的镜像可以正常运行。
- 使用IntelliJ IDEA开发工具
- 按照官方教程配置Git LFS
.JAR文件是在IntelliJ中通过Maven构建的。按照官方教程,我通过IntelliJ的命令行将文件上传至Git LFS,过程无报错。在GitHub仓库中可以看到该.JAR文件标注有“Stored on Git LFS”,且文件大小显示正确。Docker Hub的构建过程也无报错。
Docker Hub上的Dockerfile内容如下:
FROM amazoncorretto:18.0.2 ARG JAR_FILE=./target/myapp.jar COPY ${JAR_FILE} /myapp.jar WORKDIR / ENTRYPOINT ["java","-jar", "myapp.jar"]
我将Docker镜像下载到服务器并运行后,容器控制台输出:Error: Java .JAR file is corrupt
更新#1
我向GitHub提交了支持工单,得到回复:
您好,
感谢您的咨询。这似乎是Docker Hub的一个长期存在的问题。
您可以联系Docker方面了解他们是否计划添加对LFS的支持。
谢谢,
Fiona
看来该问题已存在一段时间,至今仍未解决。
更新#2
我收到了Docker支持团队的回复:
您好,
感谢您联系Docker支持团队。
目前Docker Hub不支持Git LFS。
此致,
Docker支持团队
我查看了相关文档内容,发现:
目前Docker Hub不支持Git LFS(大文件存储)。如果您的构建上下文包含由Git LFS管理的二进制文件,自动构建过程中只会克隆指针文件,这并非您需要的内容。
您可以订阅跟踪此限制的GitHub issue。
该GitHub issue已处于开放状态达7年之久。
内容的提问来源于stack exchange,提问作者Kevin O.

