Используемое программное обеспечение:
- Django 2.2.7
- Docker 19.03.4 сообщество
- OS = Ubuntu 18.04
Iпроисходят из прошлого vagrant, где я ранее создал среду, в которой у меня есть виртуальный аналог, но внутри виртуальной машины. Так сказать;Я загрузил бродячую машину и, используя инициализацию, установил все необходимые пакеты и требования. Затем на моей хост-машине я установил Eclipse и разместил проект django. Последним шагом для меня было связать их вместе, используя общие ресурсы. Таким образом, я всегда получал обновленный код.
Для тех, кто незнаком с Джанго;команда runserver по умолчанию настроена на прослушивание изменений кода и «перезапускает» (не совсем) при каждом изменении, немедленно отражающем изменение в браузере.
Внутри виртуальной машины я бы затем запустил «runserver»команда и, следовательно, возможность развиваться таким образом.
Теперь, используя Docker (я должен связать некоторое программное обеспечение вместе и в конечном итоге развернуть с помощью Docker) Я пытаюсь несколько повторить эту ситуацию. Я запустил и запустил свой докер django, используя простой Dockerfile, основанный на python-3.7.5-stretch. Контейнер работает нормально, как и сам django, однако код теперь встроен (из-за отсутствия лучшего слова). Это, конечно, из-за моей команды копирования внутри файла:
FROM python:3.7.5-stretch
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN mkdir /app
WORKDIR /app
ADD . /app/
ENV PYTHONUNBUFFERED 1
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
# install environment dependencies
RUN pip3 install --upgrade pip
EXPOSE 8000
EXPOSE 8280
CMD ["python", "manage.py", "makemigrations"]
CMD ["python", "manage.py", "migrate"]
CMD ["python", "/app/manage.py", "runserver", "0.0.0.0:8000"]
Это означает, что нужно обновлять код при каждом изменении, которое мне нужно для создания образа и перезапуска сервера. Учитывая, что я делаю это несколько раз в минуту, это кажется огромным перебором.
Я знаю об объемах, но кажется, что они смонтированы на уровне контейнера, а не на уровне его изображения. Фактически это будет означать, что все команды будут выполняться после инициализации вручную. Контейнер будет остановлен раньше этого времени.
Короче говоря: Что я могу сделать, чтобы эмулировать похожую на бродячую ситуацию, когда контейнер будет автоматически читать (или отправлять) контейнер, если это вообще возможно?
TLDR: Мне нужна ситуация, когда я могу обновлять код django в режиме реального времени без непрерывной перестройки образа. Есть варианты?