@Lepilov

Разворачивание django проекта из docker?

Разворачиваю готовый проект из докера, и не совсем понимаю, по какому принципу устанавливаются зависимости из requirements.txt. Разворачивается все без ошибок, в консоли вижу что requirements.txt тоже установился. Но не понятно куда это все устанавливается и как запускать. manage.py runserver не видит установленные зависимости и понятное дело выдает
File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

Если стандартно создать virtualenv и запустить install requirements.txt то все ок. Но чувствую что два раза установку делать как то не правильно.
Объясните пожалуйста как это все работать должно по правильному. Файл Dockerfile

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /lifeline
WORKDIR /lifeline
ADD requirements.txt /lifeline/
RUN pip install --default-timeout=100 -r requirements.txt
ADD . /lifeline/
RUN chmod +x /lifeline/docker/start.sh

CMD ["/lifeline/docker/start.sh"]
  • Вопрос задан
  • 715 просмотров
Решения вопроса 1
deepblack
@deepblack Куратор тега Django
Я делал так на основе python:3.6-alpine(конфиг немного урезан):
docker-compose.yml

version: "3.5"
services:
  db:
    build:
      context: ./db
      dockerfile: postgresql.Dockerfile
    env_file:
      - .env
    restart: always
    volumes:
      - postgres:/var/lib/postgresql/data
    ports:
      - "127.0.0.1:5432:5432"
  web:
    build: .
    restart: always
    env_file:
      - .env
      - secret.env
    command: gunicorn --bind 0.0.0.0:8080 --user nginx you_proj.wsgi
    volumes:
      - django-static:/data
    ports:
      - "127.0.0.1:8080:8080"

volumes:
  django-static:
  postgres:



Dockerfile
FROM python:3.6-alpine

RUN apk add build-base python-dev py-pip jpeg-dev zlib-dev
ENV LIBRARY_PATH=/lib:/usr/lib

WORKDIR /code

ADD requirements.txt /code/
RUN apk update
RUN apk upgrade
RUN apk --no-cache add \
    python3 \
    python3-dev \
    postgresql-client \
    postgresql-dev \
    build-base \
    gettext
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt

RUN set -x ; \
  addgroup -g 101 -S nginx ; \
  adduser -u 101 -D -S -G nginx nginx && exit 0 ; exit 1

RUN mkdir -p /data/static/ && mkdir -p /data/media/

ADD . /code/
RUN /code/maxmind.sh

ENV PYTHONUNBUFFERED 1


Management commands (пример):
  • docker exec -it container_name_1 python3 manage.py collectstatic --noinput

  • docker exec -it container_name_1 python3 manage.py migrate

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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