Django开发自动升级的Docker

2024-04-27 03:40:59 发布

您现在位置:Python中文网/ 问答频道 /正文

使用的软件:

  • Django 2.2.7版
  • Docker 19.03.4社区
  • 操作系统=Ubuntu 18.04

我来自一个流浪者的背景,在那里我以前建立了一个环境,在那里我基本上有一个看起来很像的virtualenv,但是在一个虚拟机里面。也就是说,我启动了vagrant机器,并使用provisioning安装了所有必需的包和需求。然后在我的主机上安装了Eclipse并找到了django项目。对我来说,最后一步是使用共享资源将它们绑定在一起。这样我就确保了总是有最新的代码。你知道吗

对于Django不熟悉的用户,runserver命令默认设置为侦听代码更改,并在浏览器中立即反映更改的每个更改上“重新启动”(不是真的)。你知道吗

在虚拟机内部,我将运行“runserver”命令,从而能够以这种方式进行开发。你知道吗

现在使用docker(我必须将一些软件绑定在一起,并最终使用docker进行部署),我尝试在某种程度上复制这种情况。我使用一个基于python-3.7.5-stretch的简单Dockerfile启动并运行了django docker。容器和django本身一样运行良好,但是代码现在是内置的(因为缺少更好的词)。这当然是由于我在文件中的copy命令:

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", "manage.py", "migrate"]
CMD ["python", "/app/manage.py", "runserver", "0.0.0.0:8000"]

这意味着为了在每次更改时更新代码,我需要构建映像并重新运行服务器。考虑到我每分钟要做很多次,这似乎是一个巨大的杀伤力。你知道吗

我知道卷,但看起来它们是在容器级别上安装的,而不是在映像级别上。实际上,这意味着所有命令都将在手动初始化之后运行。不过,在这个时间之前,容器将停止运行。你知道吗

长话短说:如果可能的话,我能做些什么来模拟类似流浪汉的情况,即代码将被容器自动读取(或推送)?你知道吗

TLDR:我想要一种情况,我可以在docker实时更新django代码,而无需连续重建图像。有什么选择吗?你知道吗


Tags: installdjangodockerrun代码命令envtxt
1条回答
网友
1楼 · 发布于 2024-04-27 03:40:59

我在评论中的链接是错误的。我想把这个链接起来。对于卷,给定的解决方案可能比您的解决方案简单一些。你知道吗

如果您有一个图像并大致按以下命令启动它:

$ docker run  rm -it <image_name>

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

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

文件更改现在应该重新启动容器中的Django服务器。你知道吗

相关问题 更多 >