Докер mysql на mac os "вылетает" на caching_sha2 при подключении laravel

Я сделал сброс настроек на своем Mac Mini, и я хочу установить только Docker и некоторые базовые инструменты, такие как git, непосредственно на OS X, но другое программное обеспечение, которое я хочу использовать docker - под другим программным обеспечением я имею в виду такие приложения, как php, phpstorm, nginx, node, mysql, postgres, phpmyadmin, mysql-workbench ... во многих версиях. Я хочу установить их с помощью докера, чтобы легко ими управлять. Для каждого из этих инструментов я хотел сопоставить папку, например, код моих проектов или хранилище db, конфигурация и т. д.

Во время установки mysql 8 я столкнулся со странной проблемой - я смог войти в систему как root в db с помощью phpmyadmin и mysql-workbench, но мое приложение laravel php 7 "зависает" во время соединения. Вот файл докеров mysql:

version: '3.1'

services:

  db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: terefere321
      MYSQL_ROOT_HOST: "%"
    ports:
      - 3306:3306
    volumes:
    - ./db_files:/var/lib/mysql

Вот файл докера + скрипт, который позволяет мне запускать php через cmd на докере:

FROM php:7.2-apache

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN apt-get update &&\
    apt-get install -y \
    git \
    zlib1g-dev \
    zip \
    unzip \
    &&\ 
    docker-php-ext-install pdo pdo_mysql zip &&\
    a2enmod rewrite 

Сценарий Bash для запуска контейнера докеров php-cmd и "входа" в него, чтобы получить командную строку:

set -e
cd -- "$(dirname "$0")"  # go to script dir - (for macos double clik run)
docker build -t php-cmd .
docker rm -f php-cmd
docker run -d --name php-cmd -v /Volumes/work:/var/www/html php-cmd
docker exec -it php-cmd /bin/bash

Здесь /Volumes/work - это каталог с кодом моего проекта. После "входа в систему" я запускаю php artisan migrate, и приложение зависает на 30 секунд, а после выдает ошибки:

SQLSTATE[HY000] [2006] MySQL server has gone away PDO::__construct():

Unexpected server respose while doing caching_sha2 auth : 109

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
337
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте команду default-authentication-plugin=mysql_native_password в файл dockerfile mysql8 - вы должны получить:

version: '3.1'

services:

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: terefere321
      MYSQL_ROOT_HOST: "%"
    ports:
      - 3306:3306
    volumes:
    - ./db_files:/var/lib/mysql

Другие вопросы по теме