使用的软件:
- Django 2.2.7
- Docker 19.03.4社区
- 操作系统= Ubuntu 18.04
我来自无业游民的背景,之前曾在这里建立过一个环境,在该环境中,我基本上具有一个类似于virtualenv的环境,但位于虚拟机内部。也就是说;我启动了无业游民的计算机,并使用预配置安装了所有必需的软件包和要求。然后在我的主机上安装了eclipse,并找到了django项目。对我来说,最后一步是使用共享资源将它们绑定在一起。这样,我就确保始终拥有最新的代码。
对于那些不熟悉Django的人;默认情况下,runserver命令设置为侦听代码更改,并在每次更改时“重新启动”(不是真的)(立即),以立即反映浏览器中的更改。
然后我将在虚拟机内部运行“ runserver”命令,从而能够以这种方式进行开发。
现在使用docker(我必须将某些软件捆绑在一起,最终使用docker进行部署),我尝试某种程度地复制这种情况。我使用基于python-3.7.5-stretch的简单Dockerfile启动并运行了django docker。容器与Django本身一样运行良好,但是现在已内置了代码(因为缺少更好的单词)。这当然是由于我在文件中的复制命令造成的:
FROM python:3.7.5-stretch
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN mkdir /app
WORKDIR /app
ADD . /app/
ENV PYTHONUNBUFFERED 1
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
# install environment dependencies
RUN pip3 install --upgrade pip
EXPOSE 8000
EXPOSE 8280
CMD ["python","manage.py","makemigrations"]
CMD ["python","migrate"]
CMD ["python","/app/manage.py","runserver","0.0.0.0:8000"]
这意味着为了在每次更改时更新代码,我需要构建映像并重新运行服务器。鉴于我每分钟执行多次,这似乎是一个巨大的杀伤力。
我了解卷,但是似乎它们是在容器级别而不是在映像级别安装的。实际上,这意味着所有命令将在手动初始化后运行。容器将在此之前停止。
长话短说:我该怎么做才能模仿类似无业游民的情况,如果可能的话,容器将自动读取(或推送)代码?
TLDR:我想要一种情况,我可以在Docker中实时更新Django代码,而无需不断重建映像。有选择吗?