2016-08-28 4 views
2

두 개의 도커 컨테이너 인 producer와 consumer가 있습니다.Docker - Java에서 볼륨간에 파일을 이동할 수 없습니다.

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

프로듀서 /opt/queue/in 디렉토리에 파일을두고 소비자가 그 디렉토리에서 파일을 읽고 /opt/queue/out로 이동합니다

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

고정 표시기-compose.yml :

소비자 컨테이너는 두 개의 볼륨이 . 문제는 소비자가 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를 사용해야합니다.

관련 문제