当前位置: 首页 > 知识库问答 >
问题:

在Django/Docker文件中应用更改

赵嘉悦
2023-03-14

我是开发DjangoDocker的新手,在更改项目中的文件时遇到了一个问题。我的问题是:

我对Django项目中的任何文件(模板、视图、URL)的内容进行了更改,但在我当前运行的应用程序中,这些文件没有更新。我总是希望看到我的更改,我需要重新启动服务器(我正在使用nginx),执行docker-compose up。是否有我应该安装/做的软件包或更改,以使其能够在运行时接受更改?

这是我的DockerFile:

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir -p /opt/services/djangoapp/src

COPY Pipfile Pipfile.lock /opt/services/djangoapp/src/
WORKDIR /opt/services/djangoapp/src
RUN pip install pipenv && pipenv install --system

RUN pip install pipenv && pipenv install --system

RUN pip install django-livereload 

COPY . /opt/services/djangoapp/src
RUN cd hello && python manage.py collectstatic --no-input

EXPOSE 8000
CMD ["gunicorn", "-c", "config/gunicorn/conf.py", "--bind", ":8000", "--chdir", "hello", "hello.wsgi:application"]

让我知道我可能提供的任何其他信息,以便更好地了解问题(如果不够清楚的话)。

version: '3'

services:

  # database containers, one for each db
  database1:
    image: postgres:10
    volumes:
      - database1_volume:/var/lib/postgresql/data
    env_file:
      - config/db/database1_env
    networks:
      - database1_network

  # web container, with django + gunicorn
  djangoapp:
    build: .
    environment:
      - DJANGO_SETTINGS_MODULE
    volumes:
      - .:/opt/services/djangoapp/src
      - static:/opt/services/djangoapp/static
      - media:/opt/services/djangoapp/media
      - .:/code
    networks:
      - database1_network
      - nginx_network
    depends_on:
      - database1

  # reverse proxy container (nginx)
  nginx:
    image: nginx:1.13
    ports:
      - 8000:80
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - static:/opt/services/djangoapp/static
      - media:/opt/services/djangoapp/media
    networks:
      - nginx_network
    depends_on:
      - djangoapp

networks:
  database1_network:
    driver: bridge
  database2_network:
    driver: bridge
  nginx_network:
    driver: bridge

volumes:
  database1_volume:
  static:
  media:

共有1个答案

郑燕七
2023-03-14

这很简单。现在这里发生了什么

  • 您有了Dockerfile,并将当前文件夹(在构建映像时)复制到容器中。因此,当您运行容器时,如果您在创建容器后更改了主机中的某些内容,则该容器不会与您的主机(当前工作文件夹)同步。
  • 如果要将主机与容器同步,则必须将其作为卷装入,可以是单个容器中的-v或docker Compose中的volumes

docker运行-v/host/directory:/container/directory

docker run -v ./:/opt/services/djangoapp/src

或者使用docker-compose(如果有多个容器)

version: '3'
services:
  web-service:
    build: . # path to Dockerfile
    image: your-image
    volumes:
    - /host/directory:/container/directory
   #- ./:/opt/services/djangoapp/src
 类似资料:
  • 问题内容: 可以在Django中更改上传文件的文件名吗?我搜索了,但找不到任何答案。 我的要求是,无论何时上传文件,其文件名都应以以下格式更改。 非常感谢你… 问题答案: 你如何上传文件?我以为。 FileField.upload_to的文档说,该字段 也可以是可调用的,例如函数,将被调用以获得上载路径,包括文件名。该可调用对象必须能够接受两个参数,并返回要传递给存储系统的Unix样式的路径(带有

  • 问题内容: 我在heroku中有一个项目(myapp),但无法使静态文件正常工作。 我的样子是这样的: settings.py: 重新启动时heroku restart,将heroku logs显示以下内容: 但是当我这样做时,我heroku run ls -l myapp/看不到该staticfiles文件夹: 问题答案: 我找到了解决方案。这是我最初的: 我将这些行添加到原始文件的末尾: 现在

  • 问题内容: 我正在通过创建带有一些nodejs指令的来玩docker。现在,每次更改dockerfile时,我都会通过在项目文件夹中运行来重新创建映像,但这每次都会创建一个新映像,并很快吞没我的ssd。 更改dockerfile时,是否有一种方法可以更新现有映像,或者每次更改文件时都被迫创建一个新映像? 抱歉,这是一个愚蠢的问题 问题答案: 只要没有指令,Docker构建支持缓存。如果您正在积极地

  • 我必须将一个在几个容器中运行的应用程序交付给一个客户。我可以用 我的目标是交付一个只有docker-compose.yml和图像(app1.tar,app2.tar...)的zip文件夹需要运行集装箱。

  • 问题内容: 为了运行ASP.NET Core应用程序,我生成了一个dockerfile,该文件构建了该应用程序,并将源代码复制到了容器中,该容器由Git使用Jenkins获取。因此,在我的工作区中,我在dockerfile中执行以下操作: 虽然Jenkins使用Git正确更新了主机上的文件,但Docker并未将其应用于我的映像。 我的基本构建脚本: 我尝试了各种不同的操作,例如和参数,并 在 构建

  • 问题内容: 我应该在文件中添加Django迁移文件吗? 由于迁移冲突,我最近遇到了很多git问题,并且想知道是否应该将迁移文件标记为“忽略”。 如果是这样,我将如何添加我在应用程序中拥有的所有迁移并将它们添加到文件中? 问题答案: 引用Django迁移文档: 每个应用程序的迁移文件都位于该应用程序内的“迁移”目录中,并且被设计为提交至其代码库并作为其代码库的一部分进行分发。您应该在开发计算机上制作