Python Docker中的应用程序不更新

Python Docker中的应用程序不更新,python,docker,Python,Docker,我试图在docker内部运行一个简单的Flask应用程序。但是,即使我更新app.py代码并重新启动docker容器,似乎也没有任何更新 我在OSX上运行docker。这是我遗漏的简单行为还是预期的行为 这就是我的文档文件的外观: FROM ubuntu:14.04.3 # install dependencies RUN apt-get update RUN apt-get install -y nginx RUN apt-get install -y supervisor RUN apt-

我试图在docker内部运行一个简单的Flask应用程序。但是,即使我更新app.py代码并重新启动docker容器,似乎也没有任何更新

我在OSX上运行docker。这是我遗漏的简单行为还是预期的行为

这就是我的文档文件的外观:

FROM ubuntu:14.04.3

# install dependencies
RUN apt-get update
RUN apt-get install -y nginx
RUN apt-get install -y supervisor
RUN apt-get install -y python3-pip

# update working directories
ADD ./app /app
ADD ./config /config
ADD requirements.txt /

# install dependencies
RUN pip3 install -r requirements.txt

# setup config
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN rm /etc/nginx/sites-enabled/default

RUN ln -s /config/nginx.conf /etc/nginx/sites-enabled/
RUN ln -s /config/supervisor.conf /etc/supervisor/conf.d/

EXPOSE 80
CMD ["supervisord", "-n"]
Docker图像(Docker build-t app.之后得到的图像)是一个“冻结”快照。其不可编辑;它是您在该时间点添加到图像中的任何内容的快照

现在,一旦你运行了一个图像,内容就会被展开(就像是压缩文件一样),然后你在图像中定义的过程就会运行;这是一个容器

运行中的容器可以通过
docker ps
显示,图像(可以用来运行新容器的东西)可以通过
docker images
显示

容器可以写入文件系统,但默认情况下,一旦容器停止,所有更改都将丢失。这些更改不会存储回图像

图像在重新生成之前是不可变的,容器继续使用它们开始时使用的图像。因此,对于导入app.py的Dockerfile方法,您需要运行以下程序来更新该文件:

docker build -t app .
docker stop <container_id>
docker rm <container_id>
docker run -p 80:80 -d --name=my-app app
现在,无论何时更新应用程序文件夹,都可以重新启动python,前提是它没有自动重新加载功能:

docker restart my-app

如何重新启动docker容器?@pts我已尝试停止并重新启动容器,以便关闭
docker run-p 80:80应用程序,然后重新启动。在kitematic上也尝试了同样的方法,我使用UI重新启动容器。嗨@BMitch,我认为删除有帮助。当我添加
$(pwd)/app:/app
但应用程序本身不刷新时。您知道一种更简单的方法吗?您需要重建图像,然后运行容器。@BMitch-我为您的优秀答案添加了一些背景,希望这能为OP解决问题。成功了!谢谢guys@Jonathan如果切换到使用该卷,则需要在每次更改结束后运行
restart
命令。如果您想在每次更改python脚本时自动重新加载,还有其他方法
docker restart my-app