在Docker本地启动了Laravel 5.8应用程序。
我可以在浏览器上运行该应用程序,并在Sequel Pro上连接到数据库,但是当我尝试迁移数据库时,出现了可怕的[2002] Connection refused
错误。
我将mysql端口设置为3307,因为我有另一个使用3306的mysql容器用于另一个项目。我不想继续为每个项目停止和启动docker,因为我可能会定期在两个项目之间滑动,这就是为什么我使用不同的端口。
这是docker-compose文件中的mysql部分。
mysql:
image: mysql:5.7
ports:
- "3307:3306"
environment:
MYSQL_HOST: 127.0.0.1
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: forecast
MYSQL_USER: forecast
MYSQL_PASSWORD: secret
volumes:
- mysql:/var/lib/mysql
networks:
- forecast
这是我的.env文件数据库设置键
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=forecast
DB_USERNAME=forecast
DB_PASSWORD=secret
同样值得注意的是,出于相同的原因,我在端口81而不是80上运行该应用程序。在我的浏览器中,必须放入有效的{domain.testing}:81
。
答案 0 :(得分:0)
我已经为遇到相同问题的任何人弄清楚了。
我必须调整.env文件。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
所以我将DB_HOST
更改为mysql
,并将DB_PORT
重新更改为3306
,因为docker将其映射到3307。然后它成功运行了。
答案 1 :(得分:0)
将DB_HOST=127.0.0.1
更改为DB_HOST=mysql
,它应该可以工作。因为在容器网络中,您的主机是 mysql 而不是127.0.0.1。
而且由于端口转发,因此无需将.env 3306更改为3307。docker将根据网络设置进行操作。保留为DB_PORT=3306
答案 2 :(得分:0)
将127.0.0.1
更改为mysql
mysql:
image: mysql:5.7
ports:
- "3307:3306"
environment:
MYSQL_HOST: mysql
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: forecast
MYSQL_USER: forecast
MYSQL_PASSWORD: secret
volumes:
- mysql:/var/lib/mysql
networks:
- forecast