我对 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
最佳答案
由于您使用的是机器,因此无法跟踪本地文件系统上的更改。当您运行 docker-compose build && docker-compose up
时,您目录的内容将被复制到机器内的 docker 守护进程。
如果要跟踪本地更改,则必须在本地运行 docker(Mac 用户无法使用)。但我猜你可以运行一个带有共享文件夹的 Linux 虚拟机和一个在虚拟机内运行的 docker 守护进程。
此问题已被提议为 upcoming feature .
你可以找到另一个更长的答案here .
关于python - Docker Compose Volumes 不推送最新代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32545381/