Django и MySQL с помощью docker-compose

170
04 сентября 2021, 08:10

Дело происходит ubunta. Без докера пара Django и MySQL, а вот мой докер здесь лишний и портит жизнь всем, включая меня. Итак, два контейнера запущены, но миграцию не могу сделать, ошибка

django.db.utils.OperationalError: (1045, 'Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')

Docker-compose:

version: '3'
services:
  python:
    restart: always
    build:
      context: .
      dockerfile: dockerfile
    command:
      python manage.py runserver 0.0.0.0:9000
    volumes:
      - ./:/usr/src
    ports:
      - "9000:9000"
    links: 
      - db
  db:
    image: mysql:latest
    ports:
      - "3306:3306"
    volumes: 
      - .:/code
    environment:
      MYSQL_DATABASE: 'useraccdb'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: '1111'
      MYSQL_ROOT_PASSWORD: '1111'

Dockerfile:

FROM python:3.7
WORKDIR /usr/src/
COPY ./ ./
RUN pip install -r requirements.txt && apt-get clean

requirements.txt

Django==2.2
mysql-connector-python
mysqlclient==1.4.4

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'useraccdb',
        'USER': 'root',
        'PASSWORD': '1111',
        'HOST': 'db',
        'PORT': 3306,
    }
}

После запуска docker-compose --build оба койнтейнера значатся как запущенные, в обоих могу зайти. DBeaver коннектится с базой useraccdb, которая пустая. Но по адресу localhost:9000 - ошибка. Захожу в контейнер с джагной и пытаюсь сделать миграции - получается ошибка, которая указана выше. Не знаю уже что делать. По всем мануалам правильно собрал контейнеры, но почему они не хотят взаимодействовать? Пытался добавлять в Docker-compose в бд

command: [--default-authentication-plugin=mysql_native_password]

Не помогло.

UPD Решил установить более раннюю версию бд

db:
        image: mysql:5.7

Ошибки в зависимости от того, как подключаюсь:

1) в сеттингсах localhost

django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

2) в сеттингсах 127.0.0.1

MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")

READ ALSO
Доступ к данным в памяти из нескольких php-скриптов

Доступ к данным в памяти из нескольких php-скриптов

В БД хранятся котировки валютЭти данные часто используются php-скриптами, причем за один запрос пользователя читается более одной записи...

89
Как защитить запрос от изменения? [закрыт]

Как защитить запрос от изменения? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

149