gpt4 book ai didi

php - Lumen/Docker/MySQL (SQLSTATE[HY000] [2002] Connection refused) 但我可以外部连接

转载 作者:行者123 更新时间:2023-11-30 21:34:23 25 4
gpt4 key购买 nike

我对这个失去了理智。

我在 Docker 容器中安装了 Lumen 和 MySQL。大多数一切都很好。我可以运行容器并通过浏览器访问 Lumen。我可以通过 Sequel Pro 访问 MySQL,没问题。我可以运行 php artisan migrate 并且运行良好。

但是,如果我尝试在浏览器中通过 Lumen 执行任何操作,它不会连接到数据库,并且会出现连接被拒绝的错误。

我使用的是 Lumen 5.7.7,.env 文件如下所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root

docker-compose.yml 看起来像这样:

version: '3'
services:
api:
build:
context: .
dockerfile: .docker/Dockerfile
image: laravel-docker
ports:
- 8080:80
depends_on:
- mysqldb
volumes:
- .:/srv/app
# container_name:
mysqldb:
image: mysql:5.7
container_name: mysqldb
command: mysqld --user=root --verbose
volumes:
- ./schemadump.sql:/docker-entrypoint-initdb.d/schemadump.sql
ports:
- 3306:3306
environment:
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: root
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

编辑: 在站点和命令行上运行 phpinfo() 并意识到它们甚至不是相同的版本,更不用说相同的确切细节了。这可能是这里的问题吗?看多了...

最佳答案

好吧,它现在可以正常工作了。我现在可以在浏览器中使用它,而不是在我可以使用的命令行中使用它。从上面的评论来看,问题似乎是缺少将 api 连接到数据库的“链接”部分。 .env 文件没有改变,但 docker-compose.yml 现在看起来像这样:

version: '3'
services:
api:
build:
context: .
dockerfile: .docker/Dockerfile
image: laravel-docker
ports:
- 8080:80
links:
- mysql
volumes:
- .:/srv/app
environment:
DB_HOST: mysql
DB_DATABASE: test
DB_USERNAME: test
DB_PASSWORD: test
mysql:
image: mysql:5.7
ports:
- 13306:3306
environment:
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: root

将“环境”部分添加到 yml 文件的 api 部分。这帮了大忙。并更改了端口,使其具有与内部端口不同的外部端口。不是 100% 哪个部分使它工作正常,但它现在工作正常,我不打算对其进行更多更改。

关于php - Lumen/Docker/MySQL (SQLSTATE[HY000] [2002] Connection refused) 但我可以外部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54729115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com