我在我的 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