容器外的Docker输入/输出

时间:2017-03-06 12:41:27

标签: python docker

我用python脚本创建了一个docker容器。 python脚本接受输入文件,进行一些处理并将输出文件保存在某个指定位置。

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

由于每次运行脚本时输入文件都可能不同,我希望它在docker容器之外。我也想将输出存储在容器外的某个地方。

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

docker支持这个吗?如果是这样,人们将如何实现它?

我的Dockerfile如下所示:

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

2 个答案:

答案 0 :(得分:10)

您可以使用-v选项将包含该文件的目录作为Docker数据卷安装:https://docs.docker.com/engine/tutorials/dockervolumes/

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

这将带来额外的好处,允许您停止容器,更改文件,启动容器并查看容器中反映的更改。

答案 1 :(得分:0)

所以你应该在你的Dockerfile中添加一行

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

CMD myinput

或类似的东西,

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

阅读有关

的文档

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

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