我目前正在使用Dockerfile为我的项目构建Docker镜像。在其中,我不得不复制项目中某个库加载的文件(二进制机器学习模型)(我尝试了copy和ADD命令),似乎库正在查找模型文件的sha1以验证其完整性。
然而,当我在运行的docker容器中检查这个文件的sha1时,它与原始文件的sha1不同(在构建镜像的机器上)。
我检查了Docker镜像中添加的其他文件(脚本等)。所有的sha1都是不同的。
我们尝试在不同的操作系统上构建镜像,尝试在docker镜像中设置系统区域设置(我想了一些关于编码的问题……)但是什么都不起作用。这是Docker的“正常”行为吗?
谢谢
编辑: Dockerfile由Spotify Maven插件(Java)运行
发布于 2021-08-11 12:04:17
最后我发现了问题所在。它不是docker,也不是Spotify Maven插件,而是构建项目时的maven资源过滤。我不知道它到底在做什么,但是我的二进制文件在这一步之后被修改了。为这些文件添加了一个排除,现在一切都好了。
参考代码:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>prepare-dockerfile</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/docker-ready</outputDirectory>
<resources>
<resource>
<directory>docker</directory>
<filtering>true</filtering>
</resource>
</resources>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>crt</nonFilteredFileExtension>
<nonFilteredFileExtension>pem</nonFilteredFileExtension>
<nonFilteredFileExtension>bin</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</execution>
</executions>
</plugin>https://stackoverflow.com/questions/68739568
复制相似问题