我正在使用flask-script来运行我的应用程序:
if __name__ == "__main__":
manager.run()
在码头工具中,我有以下内容:
CMD [ "python", "manage.py", "runserver", "-h", "0.0.0.0", "-p", "5000"]
现在,当我构建并运行我的容器时,应用运行正常。但是,如果我对我的代码进行了更改并保存应用程序不会重新启动,尽管我的env具有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"]
答案 0 :(得分:4)
COPY
指令
从< src>复制新文件或目录并将它们添加到路径< dest>。
的容器的文件系统中
这意味着图像具有文件的快照,就像构建图像时一样。从该映像启动容器时,它将在其文件系统中看到文件的副本。修改原始文件不会对容器内的副本产生任何影响,应用程序不会看到这些更改并且不会重新启动。
如果您希望在容器内更改文件,可以mount a host directory as a volume。也来自文档
此命令将主机目录/ src / webapp安装到/ webapp的容器中。如果路径/ webapp已经存在于容器的映像中,则/ src / webapp挂载覆盖但不会删除预先存在的内容。删除安装后,可以再次访问内容。
Docker run命令可能看起来像这样
docker run -d -v /absolute/path/to/src:/app <image-name>
然后您的文件更改应该反映在容器内的文件中(因为它们将是相同的文件),所有内容都应该按预期重新启动。
您可能也对此帖Dockerize a Flask, Celery, and Redis Application with Docker Compose感兴趣。它更进一步,并使用Docker Compose来协调Flask开发环境。