Auto-reloading of code changes with Django development in Docker with Gunicorn

后端 未结 4 663
粉色の甜心
粉色の甜心 2020-12-13 04:04

I\'m using a Docker container for Django development, and the container runs Gunicorn with Nginx. I\'d like code changes to auto-load, but the only way I can get them to loa

4条回答
  •  天命终不由人
    2020-12-13 04:30

    I faced very similar problem trying to configure auto-reload of the project with a little bit different setup. I set up volumes but it did not work anyway. After an hour of googling and thorough examination of my code I figured out that volume paths in Dockerfile and docker-compose.yml simply do not match. Make sure that they are the same.

    My Dockerfile

    FROM python:3.6.9-alpine3.10
    
    COPY ./requirements/local.txt /app/requirements/local.txt
    
    RUN set -ex \
        && apk add --no-cache --virtual .build-deps postgresql-dev git gcc libgcc musl-dev jpeg-dev zlib-dev build-base \
        && python -m venv /env \
        && /env/bin/pip install --upgrade pip \
        && /env/bin/pip install --no-cache-dir -r /app/requirements/local.txt \
        && runDeps="$(scanelf --needed --nobanner --recursive /env \
            | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
            | sort -u \
            | xargs -r apk info --installed \
            | sort -u)" \
        && apk add --virtual rundeps $runDeps \
        && apk del .build-deps
    
    ### Here is the path to the project
    COPY . /app
    
    WORKDIR /app/project
    
    ENV VIRTUAL_ENV /env
    ENV PATH /env/bin:$PATH
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    
    EXPOSE 8088
    
    

    My docker-compose.yml

    version: '3'
    
    
    services:
    
      web:
        build:
          context: ../..
          dockerfile: compose/local/Dockerfile
        restart: on-failure
        command: python manage.py runserver 0.0.0.0:8088 --settings=project.settings.local
        volumes:
          # - .:/var/www/app  # messed up path
          - .:/app  # correct path
        env_file:
          - ../../.env.local
        depends_on:
          - db
        ports:
          - "8000:8000"
    

提交回复
热议问题