1

我在我的 Mac Mini 上进行了出厂重置,我只想在 OS X 上直接安装 Docker 和一些基本工具,如 git,但其他软件我想使用 docker - 其他软件是指 php、phpstorm、nginx、node 等应用程序, mysql、postgres、phpmyadmin、mysql-workbench ......在许多版本中。我想使用 docker 安装它们以轻松管理它们。对于每个这个工具,我想用我的项目或数据库存储、配置等的代码来映​​射文件夹......

在设置 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 

运行 php-cmd docker 容器并“登录”到它以获取命令行的 Bash 脚本:

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

4

1 回答 1

1

default-authentication-plugin=mysql_native_password命令添加到 mysql8 dockerfile - 所以你应该得到:

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
于 2018-08-09T20:38:19.107 回答