Docker Compose Volumes不会推送最新的代码

我对Docker(以及所有的工具)都很新颖。 我正在尝试在我的Mac上设置docker机器和容器。

我的容器包含python web应用程序,由flask驱动。 我使用以下语句运行应用程序

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

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

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

当我尝试加载5001托pipe页面(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 

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

如果您想跟踪本地更改,则必须在本地运行docker(Mac用户不可用)。 但是你可以运行一个带有共享文件夹的Linux虚拟机和一个在虚拟机内运行的docker守护进程。

这个问题已被提出是一个即将到来的function 。

你可以在这里find另一个更长的答案。