yoy*_*oma 3 laravel docker docker-compose laradock
我无法理解如何让Laradock与mysql db一起正常工作.
我已经关注了laradock docs并安装了所有东西,使用了旋转容器
docker-compose up -d nginx mysql
Run Code Online (Sandbox Code Playgroud)
我有这样的多项目版本布局
project
+laradock-spa
Run Code Online (Sandbox Code Playgroud)
php端似乎工作,我可以得到laravel欢迎页面,但是连接数据库导致我的问题.
首先,我应该在哪里运行php artisan命令php artisan migrate?是应该从我的机器在项目文件夹中运行,还是从docker容器中运行?
当我从我的项目文件夹运行它时,它可以工作,我可以进入mysql容器并查看初始数据库表,比如migration,和user.
但是,我无法获得初始POST到db在Postman中工作 - 我收到错误 SQLSTATE[HY000] [2002] No such file or directory (SQL: insert into users (...
所以我想也许我应该从工作区容器中运行migrate命令,所以我打入工作区,但从这里php artisan migrate命令错误[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schem
a.tables where table_schema = spa and table_name = migrations)
正如我所说的,我可以成功进入mysql容器,使用root密码登录数据库,运行第一次迁移后,我可以看到里面的表.
docker ps 显示所有容器.
有人可以解释它是如何工作的以及如何解决这个问题?我不确定我应该在哪里运行哪些命令,以及容器如何相互通信.但基本上,我怎样才能让mysql数据库在laravel项目中工作?
顺便说一下,我也在PC上运行本地mysql,也许这会导致一些冲突/混乱?
我正在Win10上运行这一切.
当您使用Laradock时,您需要将容器视为一个共享网络中的单独服务器/计算机.下图中的每个矩形代表一个服务器,它拥有自己的IP地址,拥有自己的Linux系统等.因此,要从另一个容器连接到MySQL,您需要知道该容器的IP地址或主机名.
幸运的是,Laradock提供了一些神奇的功能来缓解这种情况,您可以使用MySQL主机名而不是在配置中提供IP地址.如果要启用Redis,您只需使用docker-compose启动Redis并在Laravel配置中提供Redis主机名.
如果要进行故障排除,docker-compose ps是检查正在进行的操作的最佳方法.其余部分是对多容器概念的理解.
请注意,如果不在docker-compose.yml中暴露容器端口,则无法从主机PC连接到容器.容器IP对主机不可见,因为它们属于虚拟网络,而不是计算机所连接的真实网络.默认端口已在docker-compose.yml中公开,因此您可以访问IP 127.0.0.1和端口3306的DB,与端口80的Nginx相同,依此类推.
希望现在有点清楚了:)
| 归档时间: |
|
| 查看次数: |
2764 次 |
| 最近记录: |