应用更改在django/docker文件中

27 浏览
0 Comments

应用更改在django/docker文件中

我正在使用djangodocker进行开发,当我更改项目中的文件时遇到了问题。我的问题如下:

我更改了django项目中任何文件的内容(模板,视图,urls),但它在我的当前正在运行的应用程序中没有更新。每次想要查看我的更改时,我都需要重新启动服务器(我正在使用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:

admin 更改状态以发布 2023年5月23日
0
0 Comments

这很简单。现在会发生什么:

  • 你有 Dockerfile,并且将当前文件夹(在构建镜像时)复制到容器中。因此,在运行容器时,如果在创建容器后在主机(当前工作文件夹)上更改了某些内容,则不会与主机同步。
  • 如果想要将主机与容器同步,就必须将其作为挂载,可以在单个容器中使用 -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

0