我有一个带有Python3环境并安装了各种库的docker-container。
我正在尝试针对这种环境开发一个简单的Python程序。
所以我有一个带有源代码的卷,该源代码位于容器外部,该容器已添加并在Dockerfile中设置为WORKDIR。
然后我要进入容器并尝试在命令行上运行程序。
遇到错误时,我只想在容器外部的编辑器中更改源,然后再次运行。
但是,当我这样做时,容器中正在执行的代码似乎并没有注意到我所做的更改。
如果我这样做
docker-compose up --build
然后重建容器。
显然这很慢。
容器肯定应该可以看到我正在处理的代码更改而无需重新构建吗?如果是这样,我该如何实现?
答案 0 :(得分:4)
使用ADD
将文件烘焙到容器映像中,因此,您已经注意到,在运行的应用程序中更新文件需要重新构建并重新启动整个容器。要解决此问题,您可以使用ADD
将主机上的目录挂载到您复制到容器中的路径上。
要在Docker上执行此操作,可以使用-v
或--volume
。使用Docker Compose,您可以在volumes:
下列出要挂载的目录。例如,如果您的构建文件中包含以下内容:
# Copy app code into the container working directory
ADD /my/app/code /usr/app/src
然后,您可以在容器启动时将 live 代码挂载在烘焙文件上(请注意,目录路径必须是绝对路径-您可以使用$PWD
):>
$ docker run -v /my/live/app/code:/usr/app/src python:latest
$ docker run -v "$PWD"/app/code:/usr/app/src python:latest
等效的docker-compose.yml
如下:
my-service:
image: python:latest
volumes:
- /my/live/app/code:/usr/app/src
- ./relative/paths:/work/too
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-how-to-choose-event.html中有更多有关绑定安装的信息。