2017-12-26 15 views
1

파일에서 데이터를 읽고 계산을 수행하고 결과를 출력 파일에 저장하는 파이썬 코드가 있습니다. 이 코드는 또한 로그를 로그 파일에 저장합니다. 내 현재 디렉토리 그래서, 나는 파일 아래에 있습니다도커 볼륨에서 다른 디렉토리로 파일 내보내기

1. code.py --> The main python application 
2. input.json --> This json file is used to take input data 
3. output.json --> The output data is saved in this file. 
4. logfile.log --> This file saves the log. 

위의 모든 파일은 디렉토리 Application 안에 있습니다. 전체 경로는 /home/user/Projects/Application/입니다. 이제 나는 code.py을 실행할 때 예상되는 결과를 얻고 있습니다. 그래서 아래 Dockerfile 사용하여 고정 표시기에 위의 코드를 변환 :

FROM python:3 

ADD code.py/

ADD input.json/

ADD output.json/

ADD logfile.log/

CMD [ "python3", "./code.py" ] 

나는 고정 표시기 컨테이너를 실행하고, 그것을 잘 실행되고 있지만 output.jsonlogfile.log에서 출력 데이터와 로그를 볼 수 없습니다. 그럼 파일 시스템에서 이러한 파일을 검색하고 아래 디렉토리에이 파일을 발견

/var/lib/docker/overlay2/7c237c143f9f2e711832daccecdfb29abaf1e37a4714f34f34870e0ee4b1af07/diff/home/user/Projects/Application/

내 모든 파일을 해당 디렉토리에 있었다. 로그와 데이터를 확인 했으니 까. 그런 다음 모든 파일이 현재 디렉토리가 아닌 고정 점 볼륨에 저장된다는 것을 이해했습니다.

파일과 모든 데이터를 현재 디렉토리에 보관할 수있는 방법이 있습니까?이 방법으로 출력을 확인하기가 쉽기 때문에 고정 표시 대신 /home/user/Projects/Application/을 사용하십시오.

감사

답변

0
당신은 다음과 같이 컨테이너를 실행하려고 할 수 있습니다

: 당신이 당신의 이미지를 구축 할 필요가 있습니다]

docker run --rm -v /home/user/Projects/Application/:/home/user/Projects/Application/ -d python:3 /home/user/Projects/Application/code.py

-v; 로컬 폴더를/home/user/Projects/Application /에있는 컨테이너에 바인드하십시오.

필요없는 경우 언제든지 --rm을 꺼내십시오.

파일을 확인하려면 /home/user/Projects/Application/logfile.log

에 확인 code.py 쓰기 로그를 확인하십시오 및 폴더 실행 명령이없는됩니다 docker run --rm -v /home/user/Projects/Application/:/home/user/Projects/Application/ -d python:3 sh

이 터미널에서 당신을 드롭합니다, 당신은 파일을 나열하고 있는지 확인 할 수 있습니다 필요한 파일과 설정이 있습니다.

+0

을 해당 명령을 실행하면, 그것은 나에게 ID를주고 그것을 나던 내가 고정 표시기 추신을 실행했을 때, 아무런 정보가 없기 때문에 작동하는 것 같군 그곳에. –

+0

터미널에 들어가려면'docker run --rm -v/home/user/Projects/Application/:/home/user/Projects/Application/-it python : 3 sh' 명령을 실행할 수 있습니다. '/ home/user/Projects/Application /'폴더로 이동하여 필요한 파일, 설정 등을 모두 가지고 있는지 확인하십시오. –

0

볼륨 탑재를 수행하지 않았기 때문에 파일이 도커 오버레이 볼륨 아래에 있습니다. 이 문제를 극복하기 위해, 당신은이에 유사하기 위해 Dockerfile을 수정할 수 있습니다 : 당신의 고정 표시기 실행 명령에서 다음

FROM python:3 
RUN mkdir /app 
ADD code.py /app 
ADD input.json /app 
ADD output.json /app 
ADD logfile.log /app 
WORKDIR /app 
VOLUME /app 
CMD [ "python3", "./code.py" ] 

,이 옵션을 통과해야합니다 : 컨테이너 옵션에 대한

-v /home/user/Projects/Application:/app 

상세 정보가 될 수 있습니다 ~에서 찾은 것 https://www.aquasec.com/wiki/display/containers/Docker+Containers.당신이 고정 표시기의 작성을 사용하는 경우

, 당신은 추가해야합니다

volumes: 
    - /home/user/Projects/Application: /var/www/app