python - Docker 运行:挂载卷未显示文件更改
问题描述
我正在努力运行最新的更改。以下是详细信息。
Dockerfile
FROM python:3.7.3
RUN mkdir -p /usr/apps
COPY test.py /usr/apps
RUN pip install mindsdb
CMD [ "python","test.py" ]
建造
docker build -t py37:custom .
跑
docker run -it -v /Development/PetProjects/mindsdb:/usr/apps/ py37:custom
但它仅显示构建时的更改。
解决方案
首先,在启动容器时,您没有使用卷,而是bind mounts
. 因此,您将/Development/PetProjects/mindsdb
主机上的目录挂载到/usr/apps/
目录。对该目录中主机上的文件所做的每项更改都将在容器中可见,反之亦然。
如果你想使用卷,你可以使用docker volume create
命令创建一个,然后使用这个卷运行容器:docker container run -v volume_name:path_in_container image_name
。然后,您可以通过将此卷传递给运行命令来停止容器并再次运行它,并且path_in_container
可以跨容器创建存储对目录的更改。
另一件事是你试图/usr/apps/
在你的容器中挂载并且你使用 Dockerfile 复制了一个 python 脚本。请注意,您当前docker run
的命令内容/Development/PetProjects/mindsdb
将替换 /usr/apps/
容器中的内容,如果您没有脚本,/Development/PetProjects/mindsdb
则脚本将在容器中不可见。
此外CMD
,由于路径相对性,您似乎无法正常工作。您应该将您的 CMD 更改为CMD [ "python","/usr/apps/test.py" ]
或使用WORKDIR
选项 -WORKDIR /usr/apps/
这样您的 python 命令就可以从这个目录执行并且脚本可以在那里可见。
有关卷和绑定挂载之间差异的更多信息可以在docker 文档中找到。
推荐阅读
- java - 如何将 SmbFile 转换为 File?
- c - #define 内存地址语句
- spring-boot - Spring Boot 单元测试未运行
- java - WebClient 的 ParameterizedTypeReference 问题。预期清单;发现捕获
- c# - 通过带有 Windows 身份验证的 IIS 托管 mvc 应用程序,但我得到 IIS APPPOOL\ APP 我需要连接的 Windows 用户(与 IIS express 一起使用)
- reporting-services - 具有多个系列的非缩放 SSRS 折线图
- python - 如何使用opencv python检测和增加文本图像中两行之间的空间?
- arduino - Arduino esp32:存储结构 EEPROM 的数组
- python - VSCode 中的终端在 Ubuntu 18 中显示空白屏幕
- php - 在 laravel 上的数组上调用成员函数失败()