【发布时间】:2021-07-28 18:27:25
【问题描述】:
我正在使用 this tutorial 迈出 Laravel(+passport) 的第一步。我已经使用 WSL2 为 Win10 设置了 Docker,并按照步骤使用 Laravel-Sail 来管理容器(从 Ubuntu wsl 实例内部)。这运行一个单独的 MySQL 容器。在运行php artisan migrate:install 时遇到SQLSTATE[HY000] [2002] No such file or directory 的几个问题后,我发现我应该将.env 中的DB_HOST=mysql 更改为DB_HOST=127.0.0.1。此外,由于我已经有一个 MySQL 服务作为 WAMP 的一部分运行,因此我通过将 FORWARD_DB_PORT=3366 添加到 .env 并将 'port' => env('FORWARD_DB_PORT', '3306'), 添加到 config/database.php,在端口 3366 上公开了 Sail 的 MySQL 容器。现在我终于能够完成教程了。
一切就绪后,我尝试使用邮递员测试路由,但此时,网络服务器现在无法找到 mysql 服务器。在尝试了一些事情之后,我发现将上述更改恢复为默认值可以解决此问题。但是,现在再次工匠找不到 mysql 服务器。我似乎需要在这两个设置之间切换才能让网络服务器使用 mysql 服务器并使用工匠对其进行更改。
我的预感是我正在尝试一些我不应该尝试的事情,但我无法弄清楚我应该做什么。
这个问题对我来说似乎很简单:如何在 Windows10 本地处理容器化 Laravel 项目?还是我自己让这件事变得困难,我应该只使用 Linux(我个人对此没有问题,但我应该能够说服我的同事,他们应该使用相同的本地开发设置)?
【问题讨论】:
-
你想在 Docker 容器中运行 PHP 和 Mysql(我认为这是一个更好的解决方案)还是在你机器上的 Docker 和 Mysql 服务器中运行 PHP?
-
您可以使用 docker-compose 来设置您的项目基础架构(PHP、Mysql、Nginx)并且您的容器将相互看到
-
@MichaelKrutikov 我在各自的容器中运行 PHP 和 MySQL。正如我在问题中所写,他们确实在默认设置下看到了对方,但是,当我使用这些默认设置从容器外部运行它时,Artisan 找不到 MySQL。我现在使用了一个 janky hack 来让它工作。我应该从 PHP 容器中运行 artisan 吗?
-
在容器内运行 artisan 登录 php 容器:
docker exec -ti {your_container_name} bash。要查找容器名称,请在终端docker ps中运行。登录容器后,您可以执行控制台脚本,包括 artisan -
@MichaelKrutikov 谢谢,这确实有效。我的问题更多是关于这是否是它应该工作的方式?由于我和我的团队计划在此设置上进行大量工作,因此我们不希望遇到在诸如 SO 之类的公共资源中找不到解决方案的不规范、非标准设置的怪癖。