使用的软件:
我来自一个流浪者的背景,在那里我以前建立了一个环境,在那里我基本上有一个看起来很像的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代码,而无需连续重建图像。有什么选择吗?你知道吗
我在评论中的链接是错误的。我想把这个链接起来。对于卷,给定的解决方案可能比您的解决方案简单一些。你知道吗
如果您有一个图像并大致按以下命令启动它:
使用
mount
选项可以将当前目录装载到容器中的/app
文件夹,如下所示:文件更改现在应该重新启动容器中的Django服务器。你知道吗
相关问题 更多 >
编程相关推荐