【发布时间】:2019-05-24 02:03:56
【问题描述】:
我使用 Docker 设置 Laravel 的步骤:在我的本地系统中,我没有安装 PHP、Composer、Apache、MySQL、phpMyAdmin 等。我的系统中只安装了 Git 和 Docker。
git clone https://github.com/laravel/laravel.git
-
在项目根目录创建 docker-composer.yml 文件。
version: "3" services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: db MYSQL_USER: root MYSQL_PASSWORD: pass ports: - "3306:3306" web: image: php:7.2.2-apache container_name: web_laravel depends_on: - db volumes: - ./:/var/www/html/ ports: - "4000:80" stdin_open: true tty: true phpmyadmin: image: phpmyadmin/phpmyadmin depends_on: - db external_links: - db:mysql ports: - "9191:80" environment: MYSQL_USER: root MYSQL_PASSWORD: pass MYSQL_ROOT_PASSWORD: pass PMA_HOST: db -
从项目根目录运行命令。
docker-compose up此命令将从本地缓存或 Docker Hub 中获取所有图像(php:7.2.2-apache、phpmyadmin/phpmyadmin、mysql:5.7)并为这些图像启动三个容器。
现在我需要与名为 web_laravel 的 php:7.2.2-apache 镜像容器进行交互(参见 yml 文件),这样我就可以添加 PHP 扩展和 Composer 来运行 Laravel 项目。
-
运行此命令。
docker exec -it web_laravel /bin/bash现在我可以在运行 web_laravel 容器中运行任何命令,因此我安装了 Composer 和 PHP 扩展,如 mbstrings、pdo、pdo_mysql 等。
然后使用 composer install 安装 Laravel 依赖,设置 storage 和 bootstrap/cache 文件夹的权限并运行 php artisan key:generate。
打开 localhost:4000 就可以看到 Laravel 主页了:
此时一切都很好。当我连接到我的数据库时,问题就开始了。
下一个要运行的命令(我还在容器中):
php artisan migrate
错误是:
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = blog and table_name = migrations)
Illuminate\Database\QueryException : could not find driver (SQL: select * from information_schema.tables where table_schema = blog and table_name = migrations)
我能够打开 phpMyAdmin (http://localhost:9191) 并可以创建数据库、表和操作相关的数据库。我的数据库名为 blog。
MySQL 环境变量:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=pass
【问题讨论】:
标签: php mysql docker laravel-5 docker-compose