2017-03-06 35 views
5

Tôi đã tạo vùng chứa docker với một tập lệnh python. Tập lệnh python có một tệp đầu vào, thực hiện một số xử lý và lưu tệp đầu ra tại một số vị trí được chỉ định.Đầu vào/đầu ra Docker bên ngoài vùng chứa

docker run /app/script.py --input /data/input.csv --output /data/output.csv 

Vì tệp đầu vào có thể khác nhau mỗi khi tôi chạy tập lệnh, tôi muốn nó nằm ngoài vùng chứa đế. Tôi cũng muốn lưu trữ đầu ra ở đâu đó bên ngoài thùng chứa.

docker run /app/script.py --input /my/local/location/outside/docker/input.csv --output /my/local/location/outside/docker/output.csv 

Docker có hỗ trợ tính năng này không? Nếu vậy, làm sao người ta có thể đạt được nó?

Dockerfile của tôi trông giống như sau:

FROM phusion/baseimage 

RUN apt-get update 
RUN apt-get install -y build-essential 
RUN apt-get install -y python-dev 
RUN apt-get install -y python-pip 
RUN apt-get install -y python-numpy && \ 
    apt-get install -y python-scipy 

COPY ./requirements.txt /app/requirements.txt 
COPY ./src/script.py /app/script.py 

WORKDIR /app 
COPY . /app 

Trả lời

3

Bạn có thể gắn một thư mục với tập tin bên trong như một khối lượng dữ liệu Docker sử dụng tùy chọn -v: https://docs.docker.com/engine/tutorials/dockervolumes/

docker run -d -P --name myapp -v /app mydir/app python script.py 

này sẽ có thêm lợi ích của việc cho phép bạn dừng thùng chứa, thực hiện thay đổi đối với tệp và bắt đầu vùng chứa và xem thay đổi được phản ánh trong vùng chứa.

1

vì vậy bạn nên thêm vào Dockerfile của bạn một dòng

ENTRYPOINT ["python","/app/script.py"]

CMD myinput

hoặc một cái gì đó tương tự,

đọc

What is the difference between CMD and ENTRYPOINT in a Dockerfile?

đọc các tài liệu về

https://docs.docker.com/engine/reference/builder/#entrypoint

https://docs.docker.com/engine/reference/builder/#cmd

+0

Bạn dường như thiếu một liên kết sau khi "đọc các tài liệu về" ... – Dejan

+0

Tôi đã sai lầm các liên kết , cố định ngay bây giờ, thx – user2915097

Các vấn đề liên quan