使用docker run添加数据文件

时间:2016-11-15 18:54:25

标签: python docker

我想将一个python脚本添加到docker容器中。此脚本处理我在运行容器时提供的数据文件。我无法弄清楚如何做到这一点,所以我会感谢一些帮助(我不想将data.txt文件添加到容器中)。我知道我可以使用curl将文件发送到REST接口,但如果可能的话,我想要一个更简单的解决方案。

(如果解决方案也适用于ECS,我会很高兴。但我还不了解其含义。)

Dockerfile:

FROM centos:6

RUN yum -y update
RUN yum -y install epel-release && yum clean all
RUN yum -y install python-pip && yum clean all

ADD . /myapp
WORKDIR /myapp

# install requirements
RUN pip install -r requirements.txt
# install 
#RUN pip install .

CMD ["python","./app.py", "/data.txt"]

脚本:

import sys


def print_out(datafile):
    with open(datafile, 'r') as dfile:
        for line in dfile:
            print line.strip()


def main():
    datafile = sys.argv[1]
    print_out(datafile)


if __name__ == '__main__':
    main()

data.txt中:

Bob
Steve
Marvin
Paul

运行容器(不能那样工作)

$ docker run myapp data.txt

1 个答案:

答案 0 :(得分:1)

使用主机卷(也称为bind mount)将脚本(假设它称为app.py)和data.txt映射到容器中。将它们放在同一目录中,然后运行:

docker run -v `pwd`:/myapp myapp python app.py data.txt

从该目录将当前目录映射到/ myapp(覆盖该位置图像内的任何内容)。如果您使用的是Docker for Windows / Mac,请确保您位于c:/ Users或/ Users目录下。