int*_*tar 1 containers docker docker-compose
我有一个带有 Python3 环境和安装的各种库的 docker 容器。
我正在尝试针对此环境开发一个简单的 Python 程序。
所以我拥有的是一个包含容器外部源代码的卷,该卷已添加并在 Dockerfile 中设置为 WORKDIR。
然后我向容器中加壳并尝试在命令行上运行该程序。
当我遇到错误时,我想简单地更改容器外部编辑器中的源,然后再次运行。
但是,当我这样做时,容器中的执行代码似乎没有注意到我所做的更改。
如果我做
docker-compose up --build
Run Code Online (Sandbox Code Playgroud)
然后重建容器。
显然这是非常慢的。
当然,容器应该可以在不重建的情况下看到我正在处理的代码的更改吗?如果是这样,我该如何实现这一点?
使用将ADD
文件烘焙到容器映像中,正如您所注意到的,更新正在运行的应用程序中的文件需要重建整个容器并重新启动。为了解决这个问题,您可以使用 复制到容器中的路径在主机上挂载一个目录ADD
。
要使用 Docker 执行此操作,您可以使用-v
或--volume
。使用 Docker Compose,您可以列出要挂载的目录volumes:
。例如,如果您的构建文件中有以下内容:
# Copy app code into the container working directory
ADD /my/app/code /usr/app/src
Run Code Online (Sandbox Code Playgroud)
然后,您可以在容器启动时将实时代码挂载到内置文件上(请注意,目录路径必须是绝对路径 - 您可以$PWD
为此使用):
$ docker run -v /my/live/app/code:/usr/app/src python:latest
$ docker run -v "$PWD"/app/code:/usr/app/src python:latest
Run Code Online (Sandbox Code Playgroud)
等价docker-compose.yml
如下:
my-service:
image: python:latest
volumes:
- /my/live/app/code:/usr/app/src
- ./relative/paths:/work/too
Run Code Online (Sandbox Code Playgroud)
文档中有更多关于绑定安装的信息。
归档时间: |
|
查看次数: |
1393 次 |
最近记录: |