【问题标题】:Docker Compose Volumes doesn't push latest codeDocker Compose Volumes 不推送最新代码
【发布时间】:2015-09-13 01:15:35
【问题描述】:

我对 Docker(以及所有工具)还很陌生。我正在尝试在我的 mac 上设置一个 docker 机器和容器。

我的容器包含由 flask 提供支持的 python web 应用程序。我正在使用以下语句运行应用程序

app.run(host='0.0.0.0', debug=True)

这就是我的 docker-compose.yml 的样子:

web:
  build: .                                                                                                                                                                                                
  ports:                                                                                                                                                                                                  
   - "5001:5001"                                                                                                                                                                                         
  volumes:                                                                                                                                                                                                
   - .:/volcode                                                                                                                                                                                          

当我尝试加载托管在 5001 (docker-machine-ip:5001) 的页面时,除非我执行操作,否则我看不到对 Web 应用程序的更改

 docker-compose build && docker-compose up

更新:

这是我的 Dockerfile:

FROM ubuntu:14.04
RUN apt-get -yqq update
RUN apt-get install -yqq python2.7
RUN apt-get install -yqq python-dev
RUN apt-get install -yqq libpq-dev
RUN apt-get install -yqq python-psycopg2
RUN apt-get install -yqq python-pip
ADD . /code
WORKDIR /code
RUN pip install -r server/requirements.txt
CMD python server/src/rest_server.py

这也相当于热加载。 (debug=True) 应该重新加载更改的 python 文件。

app.run(host='0.0.0.0', debug=True)

更新 2:

请注意,docker-compose.yml 和 Dockerfile 中的挂载点是不同的。具有相同的挂载点会导致以下错误。

python: can't open file 'server/src/rest_server.py': [Errno 2] No such file or directory

【问题讨论】:

  • 是的,它应该可以工作,假设所有目录都设置正确。我认为没有 Dockerfile、代码和目录结构,任何人都无法调试它。
  • 你在说什么样的变化。这对我有用。我有一个基于 flash 的 python 应用程序,它在网页上显示一个字符串。我对代码进行了更改以更改字符串,并且更改反映在网页上。这与热加载有关,并非每种语言都支持这一点。例如:- 您可能需要重新启动 Tomcat 服务器容器才能看到相关更改。

标签: python flask docker docker-compose docker-machine


【解决方案1】:

由于您使用的是机器,因此无法跟踪本地文件系统上的更改。当您运行 docker-compose build && docker-compose up 时,您的目录内容将复制到机器内的 docker 守护程序。

如果要跟踪本地更改,则必须在本地运行 docker(Mac 用户无法使用)。但我猜你可以运行一个带有共享文件夹的 Linux vm 和一个在 vm 中运行的 docker 守护进程。

这个问题已被提议为upcoming feature

您可以找到另一个更长的答案here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2023-04-06
    • 2022-10-25
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多