2016-08-28 2 views
2

У меня есть два докерных контейнера: производитель и потребитель.Docker - невозможно переместить файл между томами из java

Потребитель контейнер имеет два тома:

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')); 

Когда я пытаюсь переместить файл из командной строки, ошибок нет. Файл перемещен правильно. Почему это происходит? Как я могу диагностировать, в чем проблема?

ответ

4

The javadoc for File.renameTo конкретно говорит, что он не может перемещать файл между различными томами, и что вы должны использовать Files.move, если вам нужно поддерживать этот случай независимым от платформы способом.

Смежные вопросы