我在我的MacMini上重置了工厂,我只想在OSX上直接安装Docker和一些基本的工具,比如git,但是其他的软件我想用Docker-其他的软件我是说像php,phpstorm,nginx,node,mysql,postgres,phpmyadmin,mysql workbench。。。有很多版本。我想用docker来安装它们以便于管理。对于每一个工具,我都需要映射文件夹,例如我的项目代码或数据库存储、配置等。。。
在安装mysql 8的过程中,我遇到了一个奇怪的问题-我可以通过phpmyadmin和mysql workbench以根用户身份登录到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上通过命令运行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 container的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::\uu construct():
执行缓存时出现意外的服务器响应\u sha2身份验证:109