【发布时间】:2020-01-24 18:06:32
【问题描述】:
我无法从我的 php/laravel 容器连接到 mysql 数据库。我的连接一直被拒绝。不过,Mysql Workbench 的连接工作得很好。
我的 docker-compose 看起来像这样:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./src:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
networks:
- laravel
mysql:
image: mysql:5.7.22
container_name: mysql
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: project_db
MYSQL_USER: dev
MYSQL_PASSWORD: dev
MYSQL_ROOT_PASSWORD: dev
SERVICE_TAGS: dev
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php_node
volumes:
- ./src:/var/www
ports:
- "9000:9000"
networks:
- laravel
我的 .env 的相关部分如下所示:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=project_db
DB_USERNAME=root
DB_PASSWORD=dev
我尝试删除所有内容并重新构建映像,但无济于事。
你们能发现我的错误吗?
提前致谢
【问题讨论】:
-
没用过reading this article你需要在composer文件末尾定义网络
networks: laravel: driver: bridge。 (他们使用app-network而不是laravel) -
我试过了,但它仍然抛出连接被拒绝错误
-
mysql 是否允许来自任何 IP 地址的连接,或者是否受到限制。您的请求将来自其他容器 IP,而 Workbench 来自主机。
-
尝试 172.17.0.1 作为 .env 文件中的 DB_HOST。
-
@Jonas 这很奇怪,它通常是主机的相同 IP。你能看看这里并确认容器主机确实在改变nickjanetakis.com/blog/…