Docker устанавливает неправильные пакеты django - PullRequest
0 голосов
/ 31 декабря 2018

Хост-машина: Windows 10

Я создал проект django, который использует базу данных sqlite.Я попытался поместить свое приложение django в контейнер, используя следующий файл dockerfile:

FROM python:3.5


#Enviromental variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

#Work Dir
ADD . /code
WORKDIR /code

# Install dependencies
RUN pip install -r requirements.txt

Файл Dockercompose:

version: '3.7'

services:
  db:
    image: postgres:11.1-alpine
    volumes:
     - pgdata:/var/lib/postgresql/data/
    ports:
      - 5432:5432
  web:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db

volumes:
  pgdata:

Теперь, когда я пытаюсь запустить код, он выдает мне эту ошибку:

Starting iomweb_db_1 ... done
Starting iomweb_web_1 ... done
Attaching to iomweb_db_1, iomweb_web_1
db_1   | 2018-12-31 20:26:15.535 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1   | 2018-12-31 20:26:15.535 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1   | 2018-12-31 20:26:15.547 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.
5432"
db_1   | 2018-12-31 20:26:15.576 UTC [19] LOG:  database system was interrupted; last known up at 2018
-12-31 19:58:19 UTC
db_1   | 2018-12-31 20:26:16.655 UTC [19] LOG:  database system was not properly shut down; automatic
recovery in progress
db_1   | 2018-12-31 20:26:16.662 UTC [19] LOG:  redo starts at 0/17ABE00
db_1   | 2018-12-31 20:26:16.662 UTC [19] LOG:  invalid record length at 0/17ABE38: wanted 24, got 0
db_1   | 2018-12-31 20:26:16.662 UTC [19] LOG:  redo done at 0/17ABE00
db_1   | 2018-12-31 20:26:16.716 UTC [1] LOG:  database system is ready to accept connections
web_1  | /usr/local/lib/python3.5/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wh
eel package will be renamed from release 2.8; in order to keep installing from binary please use "pip
install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-
install-from-pypi>.
web_1  |   """)
web_1  | /usr/local/lib/python3.5/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wh
eel package will be renamed from release 2.8; in order to keep installing from binary please use "pip
install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-
install-from-pypi>.
web_1  |   """)
web_1  | Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f4e1a0
75268>
web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/utils/autoreload.py", line 225, in wrap
per
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/core/management/commands/runserver.py",
 line 112, in inner_run
web_1  |     autoreload.raise_last_exception()
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/utils/autoreload.py", line 248, in rais
e_last_exception
web_1  |     raise _exception[1]
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/core/management/__init__.py", line 327,
 in execute
web_1  |     autoreload.check_errors(django.setup)()
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/utils/autoreload.py", line 225, in wrap
per
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/__init__.py", line 24, in setup
web_1  |     apps.populate(settings.INSTALLED_APPS)
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/apps/registry.py", line 112, in populat
e
web_1  |     app_config.import_models()
web_1  |   File "/usr/local/lib/python3.5/site-packages/django/apps/config.py", line 198, in import_mo
dels
web_1  |     self.models_module = import_module(models_module_name)
web_1  |   File "/usr/local/lib/python3.5/importlib/__init__.py", line 126, in import_module
web_1  |     return _bootstrap._gcd_import(name[level:], package, level)
web_1  |   File "<frozen importlib._bootstrap>", line 985, in _gcd_import
web_1  |   File "<frozen importlib._bootstrap>", line 968, in _find_and_load
web_1  |   File "<frozen importlib._bootstrap>", line 957, in _find_and_load_unlocked
web_1  |   File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
web_1  |   File "<frozen importlib._bootstrap_external>", line 697, in exec_module
web_1  |   File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
web_1  |   File "/usr/local/lib/python3.5/site-packages/registration/models.py", line 206, in <module>

web_1  |     class RegistrationProfile(models.Model):
web_1  |   File "/usr/local/lib/python3.5/site-packages/registration/models.py", line 222, in Registra
tionProfile
web_1  |     user = models.OneToOneField(UserModelString(), verbose_name=_('user'))

Теперь я могу вручную решить эту проблему внутри контейнера под моделями;но я не уверен, откуда докер-контейнер получает эти модели.Я пытался изменить модели с python в системе, но все еще делал это.Я хотел бы исправить это, чтобы мне не приходилось исправлять это вручную каждый раз, когда я собираю этот контейнер.Я мог бы сделать коммит докера;но все же любая помощь, чтобы узнать, почему докер берет этот models.py от.

Ответы [ 2 ]

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

Мне удалось решить эту проблему.Проблема заключалась в том, что устанавливаемая мной библиотека django-registration-redux была несовместима с Django 2.0.Как только я обновил этот пакет до последней версии, все было хорошо.

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

Создайте файл run.sh и напишите ниже;

python manage.py makemigrations && \
python manage.py migrate && \
python manage.py runserver 0.0.0.0:8000

И в вашем файле docker-compose.yml напишите ниже;

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