Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_Docker - Fatal编程技术网

Python Docker运行:装入的卷未显示文件中的更改

Python Docker运行:装入的卷未显示文件中的更改,python,python-3.x,docker,Python,Python 3.x,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/ p

我正在努力运行最新的更改。详情如下

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

但它只显示生成时的更改。

首先,在启动容器时,您使用的不是卷,而是绑定装载。因此,您可以将主机上的目录
/Development/PetProjects/mindsdb
装载到
/usr/apps/
目录。对主机上此目录中的文件所做的每一项更改都将在容器中可见,反之亦然

如果要使用卷,可以使用
docker volume create
命令创建一个卷,然后使用此卷运行容器:
docker container run-v volume\u name:path\u in\u container image\u name
。然后,您可以停止容器并通过传递此卷以运行命令再次运行它,对容器中路径的更改可以跨容器创建存储

另一件事是,您试图在容器中装载
/usr/apps/
,并使用Dockerfile复制了一个python脚本。请注意,在您当前的
docker运行中,
/Development/PetProjects/mindsdb
的命令内容将替换容器中的
/usr/apps/
的内容,如果您在
/Development/PetProjects/mindsdb
中没有脚本,则脚本将在容器中不可见

此外,由于路径相对性,您的
CMD
似乎不起作用。您应该将CMD更改为
CMD[“python”,“/usr/apps/test.py”]
或使用
WORKDIR
选项-
WORKDIR/usr/apps/
,以便可以从该目录执行python命令,并且可以在那里看到脚本


有关卷和绑定装载之间差异的更多信息,请参见。

关于/Development/PetProjects/mindsdb?@GonzaloMatheu文件的内容。感谢您的回复。理想情况下,我正在为Python3.7寻找一个可以保留已安装libs的自定义映像,当我运行时,我会使用
docker exec
来SSH并完成我的工作。我无法做到这一点。为什么我不能在安装了所有libs的情况下运行一个映像来提供bash呢?在您的情况下,您可以像在所有python依赖项中一样创建映像。但是,只要容器中的进程正在运行,容器就会运行。您可以将您的容器装载到容器中的某个目录,其中包含主机上的项目文件。然后,在使用
docker-run
命令时,装载目录并覆盖要在容器中运行的命令:
docker-run-v/host\u-dir:container\u-dir image bash
。现在,您可以在容器控制台中使用来自主机操作系统的文件。