Я сделал сброс настроек на своем 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


Добавьте команду 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