Как связать базу данных mysql в одном контейнере с другим контейнером, на котором запущено мое приложение для блога django (с помощью docker-compose) - PullRequest
0 голосов
/ 06 декабря 2018

Я создал приложение для блога с django и подключил его к базе данных mysql, хранящейся на моем локальном компьютере (localhost), которой я управляю через phpmyadmin.

Однако я перешел на Ubuntu 18.04 LTS (ранеена машине с Windows) и хотел развернуть мое приложение с помощью док-контейнеров.Я хочу запустить базу данных mysql в одном контейнере, а мое приложение для блога - в другом контейнере, чтобы они общались друг с другом (для этого я использую docker-compose).

Ниже приведен словарь DATABASES на моемapp:

enter image description here

А вот файл docker-compose.yml.

enter image description here

После запуска команды docker-compose up я получаю эту ошибку:

enter image description here

Там написано '(2006, «Плагин аутентификации» caching_sha2_password'не может быть загружено: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so: не удается открыть файл общего объекта: такой файл или каталог отсутствуют ")'.

1 Ответ

0 голосов
/ 07 декабря 2018

В контейнере БД вы устанавливаете пароль только для пользователя root, но используете test пользователя.Так что вам либо нужно установить MYSQL_PASSWORD env var.Или используйте root пользователя.

Подробнее о переменных env в mysql docker hub docs

Моя рекомендация - изменить определение службы БД на

services:
    db: 
        image: mysql
        enviroment: 
            MYSQL_RANDOM_ROOT_PASSWORD: 1
            MYSQL_DATABASE: test
            MYSQL_USER: test
            MYSQL_PASSWORD: test

Это не поощряетиспользуйте пользователя root, что считается наилучшей практикой.


Вероятно, причина этих ошибок заключается в том, что у вас неверная версия mysql.В mysql docker hub вы можете видеть, что тег latest (с неявным тегом, если вы его не предоставляете), такой же, как 8.0.Но многие приложения совместимы только с более старыми 5.7.Чтобы изменить это, в вашем docker-compose добавьте тег 5.7:

services:
    db: 
        image: mysql:5.7

(5,7 и 8,0 на самом деле только один основной выпуск, а 8,0 был выпущен в 2017 году)

...