Автоматическая перезагрузка сервера Django в Docker - PullRequest
0 голосов
/ 29 января 2019

Я учусь использовать Docker, и со вчерашнего дня у меня возникла проблема (прежде чем я обратился к запросу, я начал исследовать, но не смог решить проблему), моя проблема в том, что у меня есть проект Django в моем локальномКроме того, у меня есть тот же проект с Docker, но когда я меняю свой локальный проект, он не отражается в контейнере, в котором выполняется проект.Буду очень признателен, если вы поможете мне с этим, пожалуйста.Спасибо.

Dockerfile

FROM python:3.7-alpine

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code

RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add postgresql-dev \
    && pip install psycopg2 \
    && apk del build-deps

RUN pip install --upgrade pip
RUN pip install pipenv

COPY ./Pipfile /code
RUN pipenv install --skip-lock --system --dev

COPY ./entrypoint.sh /code

COPY . /code

ENTRYPOINT [ "/code/entrypoint.sh" ]

docker-compose.yml

# version de docker-compose con la que trabajaremos
version: '3'

# definiendo los servicios que correran en nuestro contenedor
services:
  web:
    restart: always
    build: .
    command: gunicorn app.wsgi:application --bind 0.0.0.0:8000 #python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
      - static_volume:/code/staticfiles
      - media_volume:/code/mediafiles
    expose:
      - 8000
    environment:
      - SQL_ENGINE=django.db.backends.postgresql
      - SQL_DATABASE=postgres
      - SQL_USER=postgres
      - SQL_PASSWORD=postgres
      - SQL_HOST=db
      - SQL_PORT=5432
      - DATABASE=postgres
    depends_on:
      - db
    env_file: .env
  db:
    restart: always
    image: postgres:10.5-alpine
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
  nginx:
    restart: always
    build: ./nginx
    volumes:
      - static_volume:/code/staticfiles
      - media_volume:/code/mediafiles
    ports:
      - 1337:80
    depends_on:
      - web

volumes:
  static_volume:
  media_volume:

И небольшое сомнение, является ли хорошей практикой хранение переменных среды вDockerfile или docker-compose ?, я использую .env, но я видел во многих местах, что они хранят переменные в docker-compose, как показано в коде выше

Я надеюсь, что вы можете мне помочь, любая рекомендацияо моем проекте, очень хорошо принят, так как я комментирую, я новичок в Docker, но мне очень нравится это, и я хотел бы узнать больше об этом.

1 Ответ

0 голосов
/ 29 января 2019

Как обычно люди подходят к этому, чтобы иметь отдельные docker-compose конфигурации для среды разработки и производства, например, local.yml и production.yml.Таким образом, вы можете использовать runserver при разработке (что, вероятно, вам больше подойдет, так как вы получите много отладочной информации) и gunicorn при работе.

Я бы рекомендовал изучить *Проект 1008 *https://github.com/pydanny/cookiecutter-django, в который встроено множество хороших практик Django, а также хорошая готовая конфигурация Docker.Вы можете создать тестовый проект, используя cookiecutter, а затем проверить, как они выполняют настройку Docker, включая переменные среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...