我如何配置Django / Python docker实例,以便立即反映更新?

问题描述 投票:0回答:2

我有Docker 2.0 / Python 3.7应用程序,已将其及其随附的Web和数据库映像(下面是docker-compose.yml文件)加载到Docker容器中...

version: '3'

services:
  mysql:
    restart: always
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: 'maps_data'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'chicommons'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'password'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'password'
    ports:
      - "3406:3406"
    volumes:
      - my-db:/var/lib/mysql

  web:
    restart: always
    build: ./web
    ports:           # to access the container from outside
      - "8000:8000"
    env_file: .env
    environment:
      DEBUG: 'true'
    command: /usr/local/bin/gunicorn maps.wsgi:application -w 2 -b :8000
    depends_on:
      - mysql

  apache:
    restart: always
    build: ./apache/
    ports:
      - "9090:80"
    links:
      - web:web

volumes:
  my-db:

这里是控制堆栈的Dja​​ngo部分的Web / Dockerfile ...

FROM python:3.7-slim

RUN apt-get update && apt-get install

RUN apt-get install -y libmariadb-dev-compat libmariadb-dev
RUN apt-get update \
    && apt-get install -y --no-install-recommends gcc \
    && rm -rf /var/lib/apt/lists/*

RUN python -m pip install --upgrade pip
RUN mkdir -p /app/

WORKDIR /app/

COPY requirements.txt requirements.txt
RUN python -m pip install -r requirements.txt

COPY entrypoint.sh /app/
COPY . /app/
RUN ["chmod", "+x", "/app/entrypoint.sh"]

ENTRYPOINT ["/app/entrypoint.sh"]

我的问题是,有没有一种方法可以配置某些东西,以便在对Python文件进行本地更改时,更改立即反映在我正在运行的Docker实例中?现在,如果我进行更改,则必须运行

docker-compose down --rmi all
docker-compose up

您可以想象,这是一个漫长的过程,尤其是在仅更改一个文件的情况下。

python django python-3.x docker docker-compose
2个回答
0
投票

将本地系统上的源通过volume和setup Web服务器安装到泊坞窗中的源,并通过文件更改实时重新加载,而使用gunicorn服务器则为--reload参数。


0
投票

您可以创建一个卷。使用卷,您可以在机器和Docker容器之间共享文件夹。这将在与docker-compose处于同一级别的文件夹“ volumes / web”中以及容器内的/ opt / app中创建一个卷。

这样,您可以在本地工作,并将更改反映在您的Docker容器中。根据入口点的不同,您可以停止应用程序并重新启动它,而无需重新启动容器。

  web:
    restart: always
    build: ./web
    ports:           # to access the container from outside
      - "8000:8000"
    env_file: .env
    environment:
      DEBUG: 'true'
    command: /usr/local/bin/gunicorn maps.wsgi:application -w 2 -b :8000
    depends_on:
      - mysql

    volumes:
      - ./volumes/web:/opt/app
© www.soinside.com 2019 - 2024. All rights reserved.