在docker上重新启动flask应用程序的更改

我正在使用flask脚本来运行我的应用程序:

if __name__ == "__main__": manager.run() 

在docker工人,我有以下几点:

 CMD [ "python", "manage.py", "runserver", "-h", "0.0.0.0", "-p", "5000"] 

现在,当我build立和运行我的容器应用程序运行良好。 但是,如果我更改我的代码,并保存应用程序不会重新启动,尽pipe我的env具有DEBUG = Truevariables集。 我在这里错过了什么?

Dockerfile:

 FROM python:3.4-slim RUN apt-get update -y && \ apt-get install -y \ python-pip \ python-dev \ pkg-config \ libpq-dev \ libfreetype6-dev COPY ./requirements.txt /app/requirements.txt WORKDIR /app RUN pip3 install -r requirements.txt COPY . /app CMD [ "python", "manage.py", "runserver"] 

COPY指令

将新文件或目录复制并将其添加到path中容器的文件系统。

这意味着图像具有文件的快照,就像构build图像时一样。 当您从该映像启动容器时,它将在文件系统中看到文件的副本。 修改原始文件不会对容器内的副本产生任何影响,应用程序不会看到这些更改,也不会重新启动。


如果希望文件在容器内更改,则可以将主机目录挂载为卷 。 另外从文档

该命令将主机目录/ src / webapp安装到/ webapp的容器中。 如果path/ web应用程序已经存在于容器的映像中,那么/ src / webapp挂载会覆盖,但不会删除预先存在的内容。 一旦挂载被删除,内容可以再次访问。

Docker运行命令可能看起来像这样

 docker run -d -v /absolute/path/to/src:/app <image-name> 

然后你的文件更改应该反映在容器内的文件(因为它们将是相同的文件),一切都应该按预期重新启动。


您可能也对这篇文章感兴趣使用Docker Compose Dockerize Flask,Celery和Redis应用程序 。 这需要更进一步,并使用Docker Compose编排Flask开发环境。

Interesting Posts