我在Mac Mini上进行了出厂重置,我只想在OS X上直接安装Docker和一些基本工具(如git),而对于其他我想使用docker的软件,我要使用其他软件,例如php,phpstorm,nginx ,节点,mysql,postgres,phpmyadmin,mysql-workbench ...的许多版本。我想使用docker安装它们以轻松管理它们。对于此工具中的每一个,我都想使用例如我的项目或db storagem的代码,配置等...
在安装mysql 8期间,我遇到一个奇怪的问题-我能够通过phpmyadmin和mysql-workbench作为root登录到db,但是我的php 7 laravel应用在连接期间“挂起”。这是mysql dockerfile:
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
这是docker文件+脚本,可让我在docker上通过cmd运行php:
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 docker容器并“登录”以获取命令行:
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服务器已消失PDO :: __ construct():
执行caching_sha2 auth时,服务器意外重新放置:109
答案 0 :(得分:1)
向mysql8 dockerfile添加default-authentication-plugin=mysql_native_password
命令-因此您应该获得:
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