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。