【问题标题】:Developing in docker-compose. Getting the container to recognise code changes在 docker-compose 中开发。让容器识别代码更改
【发布时间】:2023-03-31 20:20:01
【问题描述】:

我有一个安装了 Python3 环境和各种库的 docker-container。

我正在尝试针对这种环境开发一个简单的 Python 程序。

所以我有一个卷,我的源代码在容器之外,它被添加并在 Dockerfile 中设置为 WORKDIR。

然后我将壳放入容器并尝试在命令行上运行程序。

当我遇到错误时,我只想在容器外的编辑器中更改源代码,然后再次运行。

但是,当我这样做时,容器中的执行代码似乎没有注意到我所做的更改。

如果我这样做了

docker-compose up --build 

然后重建容器。

显然这很慢。

当然,容器应该可以看到我正在处理的代码的更改而无需重建?如果是这样,我该如何做到这一点?

【问题讨论】:

标签: docker docker-compose containers


【解决方案1】:

使用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

documentation 中有更多关于绑定挂载的信息。

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多