python在docker容器中创建目录和写入文件
我正在编写一个现有python脚本的docker文件 我的docker文件:python在docker容器中创建目录和写入文件,python,docker,Python,Docker,我正在编写一个现有python脚本的docker文件 我的docker文件: FROM python:2.7.11 ADD ./ test_project/ RUN mkdir /test_project/download/ RUN chmod -R 777 /test_project/download WORKDIR test_project RUN ls -ltr CMD [ "python", "report/test.py"]` python脚本test.py的一部分,用于创建目录和子
FROM python:2.7.11
ADD ./ test_project/
RUN mkdir /test_project/download/
RUN chmod -R 777 /test_project/download
WORKDIR test_project
RUN ls -ltr
CMD [ "python", "report/test.py"]`
python脚本test.py的一部分,用于创建目录和子目录os.makedirs(download_directory)
此处“下载目录”=/test\u project/download/reports/2017-01-24/
在本地docker之外运行时,它会在本地文件系统上创建目录但是,在docker内部运行时,它不会在docker容器中创建目录。我查看了docker图像中的目录,它只有我从Dockerfile创建的目录,而没有应该从python脚本创建的子目录
知道我可能遗漏了什么吗 ---更新---
我发现的另一件事是:
docker run --rm -it test_project bash
我看不到由python脚本创建的目录。但是,在构建项目后,我首先使用与上面相同的命令进入image bash内部,然后使用以下命令执行脚本:
python test_project/test.py
创建目录
是不是因为每次运行后容器都被销毁,我看不到正在写入的文件/目录?不要使用
docker run
,使用docker exec
docker exec
在已经运行的容器中运行命令。docker run
每次运行时都会创建一个新容器
在这里,您创建了两个容器。另外,当您在第二个docker run
调用(docker run--rm-it test\u project bash
)上启动“bash”时,您覆盖了dockerfile的CMD,因此在创建该容器时,脚本不会在该容器上运行。这就是为什么在手动运行python脚本之前,您没有看到预期的文件(在第二个容器中)
如果您试图登录到使用docker run test_project
创建的容器,则需要执行以下操作:
$docker ps
CONTAINER ID IMAGE命令创建的状态端口名称
f357de526da7测试项目“python report/test.py”5分钟前上升到5分钟前
在本例中,我们看到这个容器的名称是“虚构的居里”
现在打开该容器上的外壳:
docker exec-it-virtual_-curie bash
另见:
docker run--帮助
及
docker exec--help
也许可以发布您的test.py
以及如何运行docker容器。@ChrisMcKinnel。我更新了问题。由于您以命令的形式运行了“bash”,因此它会覆盖CMD
指令,而test.py不会运行。