我正在使用 Flask-script 来运行我的应用程序:
if __name__ == "__main__":
manager.run()
在 docker 中我有以下内容:
CMD [ "python", "manage.py", "runserver", "-h", "0.0.0.0", "-p", "5000"]
现在,当我构建并运行容器时,应用程序运行良好。但是,如果我对代码进行更改并保存,尽管我的环境设置了 DEBUG=True 变量,但应用程序不会重新启动。我在这里错过了什么吗?
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"]
The COPY https://docs.docker.com/engine/reference/builder/#copy操作说明
从 复制新文件或目录,并将它们添加到容器文件系统的路径 中。
这意味着该映像具有构建映像时的文件快照。当您从该映像启动容器时,它将在其文件系统中看到您的文件的副本。修改原始文件不会对容器内的副本产生任何影响,应用程序不会看到这些更改并且不会重新启动。
如果您希望文件在容器内更改,您可以将主机目录挂载为卷 https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume。也来自文档
此命令将主机目录 /src/webapp 安装到位于 /webapp 的容器中。如果路径 /webapp 已存在于容器的映像中,则 /src/webapp 挂载会覆盖但不会删除预先存在的内容。一旦移除安装,就可以再次访问内容。
Docker run 命令可能看起来像这样
docker run -d -v /absolute/path/to/src:/app <image-name>
然后,您的文件更改应该反映在容器内的文件中(因为它们将是相同的文件),并且一切都应该按预期重新启动。
您可能也对这篇文章感兴趣使用 Docker Compose 对 Flask、Celery 和 Redis 应用程序进行 Docker 化 http://nickjanetakis.com/blog/dockerize-a-flask-celery-and-redis-application-with-docker-compose。它更进一步,使用 Docker Compose 来编排 Flask 开发环境。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)