Docker – 无法在java之间的卷之间移动文件

我有两个docker集装箱:生产者和消费者。

消费者容器有两卷:

VOLUME ["/opt/queue/in", "/opt/queue/out"] 

泊坞窗,compose.yml

 consumer: image: consumer producer: image: producer volumes_from: - consumer 

生产者将文件放在/opt/queue/in目录中,使用者从该目录读取文件并将其移动到/opt/queue/out 。 问题是,消费者是用Java编写的,下面的Java代码返回-1 (操作失败)。

 new File('/opt/queue/in/in_file').renameTo(new File('/opt/queue/in/in_file')); 

当我尝试从命令行移动文件没有错误。 文件被正确移动。 为什么发生这种情况? 我如何诊断问题是什么?

File.renameTo的javadoc明确指出,它可能无法在不同的卷之间移动文件,如果需要以独立于平台的方式支持这种情况,则应使用Files.move。