gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:35 27 4
gpt4 key购买 nike

我有一个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.

以上所有文件都位于目录Application内。完整路径为 /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.jsonlogfile.log 中的输出数据和日志。然后我在文件系统中搜索这些文件,并在以下目录中找到这些文件:

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

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

有什么方法可以将文件和所有数据保存在当前目录 /home/user/Projects/Application/ 而不是 docker 中,因为这样我就可以轻松地检查输出。

谢谢

最佳答案

这些文件位于 docker 覆盖卷下,因为您没有进行卷安装。为了克服这个问题,您可以将 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

有关容器选项的更多信息,请访问 https://www.aquasec.com/wiki/display/containers/Docker+Containers

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

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

关于python - 将文件从 docker 卷导出到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47974441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com