Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文件从docker卷导出到另一个目录_Python_Docker - Fatal编程技术网

Python 将文件从docker卷导出到另一个目录

Python 将文件从docker卷导出到另一个目录,python,docker,Python,Docker,我有一个python代码,它从文件中读取数据,进行一些计算,并将结果保存到输出文件中。代码还将日志保存在日志文件中。因此,在我当前的目录中,我有以下文件: 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

我有一个python代码,它从文件中读取数据,进行一些计算,并将结果保存到输出文件中。代码还将日志保存在日志文件中。因此,在我当前的目录中,我有以下文件:

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.
上述所有文件都位于目录
应用程序
中。完整路径是
/home/user/Projects/Application/
。现在,当我运行
code.py
时,我得到了预期的结果。因此,我使用下面的
Dockerfile
将上述代码转换为docker:

FROM python:3

ADD code.py /

ADD input.json /

ADD output.json /

ADD logfile.log /

CMD [ "python3", "./code.py" ]
当我运行docker容器时,它运行正常,但在
output.json
logfile.log
中看不到输出数据和日志。然后我在文件系统中搜索这些文件,并在以下目录中找到这些文件:

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

我所有的文件都在那个目录里。我检查了日志和数据,它就在那里。然后我了解到所有文件都将保存在docker卷中,而不是当前目录中

是否有任何方法可以将文件和所有数据保存在当前目录中,而不是docker,因为这样可以方便地检查输出


谢谢

您可以尝试按如下方式运行容器:[您可能不需要构建图像]

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

请确保
code.py
将日志写入
/home/user/Projects/Application/logfile.log

要通过运行命令验证文件和文件夹是否存在,请执行以下操作:
docker run--rm-v/home/user/Projects/Application/:/home/user/Projects/Application/-d python:3 sh


这将使您进入一个终端,您可以列出文件并确保所需的文件和配置在那里。

这些文件位于docker overlay卷下,因为您没有进行卷装载。要解决此问题,您可以修改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" ]
然后在docker run命令中,确保传递此选项:

-v /home/user/Projects/Application:/app
有关容器选项的更多信息,请访问

如果使用docker compose,则需要添加:

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

通过运行该命令,它给了我一个id,但它似乎不起作用,因为当我运行docker ps时,那里没有任何信息。您可以运行命令
docker run--rm-v/home/user/Projects/Application/:/home/user/Projects/Application/-it python:3 sh
进入终端。导航到文件夹
/home/user/Projects/Application/
,确保您拥有所有必需的文件、配置等。