【问题标题】:Applying changes in django/docker files在 django/docker 文件中应用更改
【发布时间】:2019-04-03 02:40:49
【问题描述】:

我是 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:

【问题讨论】:

  • 显示你的 docker-compose 文件
  • 我刚刚用我的 docker-compose 文件更新了我的问题
  • 安装卷后仍然无法正常工作?

标签: python django docker


【解决方案1】:

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

  • 您拥有 Dockerfile 并将当前文件夹(在构建映像时)复制到容器中。因此,当您运行容器时,如果您在创建容器后更改主机中的某些内容,它不会与您的主机(当前工作文件夹)同步。
  • 如果您想将主机与容器同步,您必须将其作为 volume 挂载到单个容器中的 -v 或 docker compose 中的 volumes

docker run -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

【讨论】:

  • 我尝试运行“docker run -v ./:/opt/services/djangoapp/src”但是我在项目文件夹中运行它并且它给出了它需要至少一个的错误论据
  • 我在docker-compose中添加了上面引用的部分,但它仍然没有同步
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多