0

I have a django app connecting to mysql. I also use nginx for srving static files. My django app can't connect to mysql that's inside docker. I use docker compose to connect these 3 containers. But when i run docker compose up command i get this error. I use python:3.9-slim-buster image for django app. I already tried chaning it to python:3.9 but nothing has changed.

Docker compose file

version: '3.8'
services:
    django:
        build: .
        volumes:
            - static:/static
            - media:/media
        ports:
            - 8000:8000
        networks:
            - database
        environment:
            DB_HOST: db
        depends_on:
            - db
    nginx:
        build: ./nginx
        ports:
            - 80:80
        volumes:
            - static:/static
        depends_on:
            - django
    db:
        image: mysql:8.0.25
        command: '--default-authentication-plugin=mysql_native_password'
        restart: always
        ports:
            - 3306:3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: ecommerce
        networks:
            - database
        volumes:
            - db:/var/lib/mysql
volumes:
    static:
    media:
    db:
networks:
    database:

Error:

Traceback (most recent call last):
django_1  |   File "/app/manage.py", line 22, in <module>
django_1  |     main()
django_1  |   File "/app/manage.py", line 18, in main
django_1  |     execute_from_command_line(sys.argv)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
django_1  |     utility.execute()
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute
django_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
django_1  |     self.execute(*args, **cmd_options)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute
django_1  |     output = self.handle(*args, **options)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 89, in wrapped
django_1  |     res = handle_func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 75, in handle
django_1  |     self.check(databases=[database])
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 419, in check
django_1  |     all_issues = checks.run_checks(
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/checks/registry.py", line 76, in run_checks
django_1  |     new_errors = check(app_configs=app_configs, databases=databases)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/core/checks/model_checks.py", line 34, in check_all_models
django_1  |     errors.extend(model.check(**kwargs))
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1290, in check
django_1  |     *cls._check_indexes(databases),
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 1696, in _check_indexes
django_1  |     connection.features.supports_expression_indexes or
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in __get__
django_1  |     res = instance.__dict__[self.name] = self.func(instance)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/features.py", line 240, in supports_expression_indexes
django_1  |     not self.connection.mysql_is_mariadb and
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in __get__
django_1  |     res = instance.__dict__[self.name] = self.func(instance)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 401, in mysql_is_mariadb
django_1  |     return 'mariadb' in self.mysql_server_info.lower()
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in __get__
django_1  |     res = instance.__dict__[self.name] = self.func(instance)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 390, in mysql_server_info
django_1  |     return self.mysql_server_data['version']
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in __get__
django_1  |     res = instance.__dict__[self.name] = self.func(instance)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 366, in mysql_server_data
django_1  |     with self.temporary_connection() as cursor:
django_1  |   File "/usr/local/lib/python3.9/contextlib.py", line 117, in __enter__
django_1  |     return next(self.gen)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 603, in temporary_connection
django_1  |     with self.cursor() as cursor:
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
django_1  |     return func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 259, in cursor
django_1  |     return self._cursor()
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 235, in _cursor
django_1  |     self.ensure_connection()
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
django_1  |     return func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
django_1  |     self.connect()
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/utils.py", line 90, in __exit__
django_1  |     raise dj_exc_value.with_traceback(traceback) from exc_value
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
django_1  |     self.connect()
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
django_1  |     return func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect
django_1  |     self.connection = self.get_new_connection(conn_params)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
django_1  |     return func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 234, in get_new_connection
django_1  |     connection = Database.connect(**conn_params)
django_1  |   File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect
django_1  |     return Connection(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__
django_1  |     super().__init__(*args, **kwargs2)
django_1  | 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')

0 Answers0