Задать вопрос
@ErikHabr

Как заставить docker обновлять код django?

Подскажите как сделать так, чтобы когда я внес изменения в коде, докер автоматически обновлял контейнер и эти изменения применились? Получается очень не удобно работать сейчас. У меня mac os (если это важно).

Пример Docker
FROM python:3.8

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir /efood_backend

WORKDIR /efood_backend

COPY requirements.txt /efood_backend/

RUN pip install --upgrade pip && pip install -r requirements.txt

ADD . /efood_backend/


Пример docker-compose.yaml
version: '3'

services:
  backend:
    build: .
    container_name: efood_backend
    #hostname: efood_backend
    restart: always
    command: python manage.py runserver 0.0.0.0:8000  # python backend/manage.py ?
    volumes:
      - .:/efood-backend
    ports:
      - "0.0.0.0:8000:8000"  # 8000:8000 ?
    env_file:
      - .env
    depends_on:
      - pgdb
      - celery
      - redis

  celery:
    build: .
    container_name: efood_celery
    command: celery -A project worker -l INFO
    volumes:
      - .:/efood-backend
    env_file:
      - .env
    depends_on:
      - redis
      - pgdb

  celery_beat:
    build: .
    container_name: efood_celery_beat
    command: celery -A project beat -l info
    env_file:
      - .env
    depends_on:
      - redis
      - pgdb
      - celery
    volumes:
      - .:/efood-backend

  pgdb:
    image: postgres
    container_name: efood_pgdb
    env_file:
      - .env
    volumes:
      - efood-pgdata:/var/lib/postgresql/data/

  pgadmin:
    container_name: efood_pgadmin
    image: dpage/pgadmin4
    depends_on:
      - pgdb
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - 8080:80
    volumes:
      - efood-pgadmin-data:/var/lib/pgadmin
    links:
      - "pgdb:pgsql-server"

  redis:
    image: "redis:alpine"
    container_name: efood_redis

volumes:
  efood-pgdata:
  efood-pgadmin-data:
  • Вопрос задан
  • 577 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
Предварительно вызывать RUN mkdir /efood_backend нет необходимости - WORKDIR /efood_backend сам создаст директорию.

Можешь попробовать запускать приложение не напрямую python manage.py runserver 0.0.0.0:8000, а с помощью gunicorn - у него есть способность авторелоада в случае изменения файла, надо указать за каким именно файлом надо следить как-то так:
--preload --reload --reload-extra-file /path/to/file/reload.txt
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы