Docker for Django开发自动更新

使用的软件:

  • 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代码,而无需不断重建映像。有选择吗?

wuzheng96201 回答:Docker for Django开发自动更新

我在评论中的链接是错误的。我打算链接此answer。给定的解决方案可能比您的解决方案要容易一些。

如果您有图片,并通过以下命令大致启动它:

$ docker run --rm -it <image_name>

使用--mount选项,可以将当前目录挂载到容器中的/app文件夹中,如下所示:

$ docker run --rm -it --mount src="$(pwd)",target=/app,type=bind <image_name>

文件更改现在应该在容器中重新启动Django服务器。

本文链接:https://www.f2er.com/3144170.html

大家都在问