KaL*_*aKi 4 mysql symfony docker
我在使用 docker 和 symfony 访问 mysql 时遇到问题。
要尝试通过连接到 php 容器来查询 mysql:
docker exec -it symfony_php bash
然后我执行以下命令:
bin/console 原则:数据库:创建
这是我收到以下错误消息的地方:
驱动程序发生异常:SQLSTATE [HY000] [2002] 连接被拒绝
这是我的“docker-compose.yml”的代码:
version: '3'
services:
apache:
container_name: symfony_apache
build: .docker/apache
ports:
- "80:80"
volumes:
- .docker/config/vhosts:/etc/apache2/sites-enabled
- .:/home/www/symfony
depends_on:
- php
mysql:
container_name: symfony_mysql
image: mysql
ports:
- "3306:3306"
volumes:
- .docker/data/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sf4
MYSQL_USER: sf4
MYSQL_PASSWORD: sf4
php:
container_name: symfony_php
build: .docker/php
volumes:
- .:/home/www/symfony
depends_on:
- mysql
phpmyadmin:
container_name: symfony_phpmyadmin
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
environment:
PMA_HOST: mysql
PMA_PORT: 3306
links:
- mysql
Run Code Online (Sandbox Code Playgroud)
这是我的 .env 的代码:
DATABASE_URL=mysql://root:root@127.0.0.1:3306/s4
小智 5
您是否尝试使用内部标识符作为 mysql 主机?
DATABASE_URL=mysql://root:root@symfony_mysql:3306/s4
DATABASE_URL=mysql://root:root@mysql:3306/s4
Run Code Online (Sandbox Code Playgroud)
我不认为 127.0.0.1 在容器内工作。
您也可以尝试使用您的“外部”IP 或 URL,因为您已经公开了端口 3306。
小智 5
使用此命令获取ip地址
docker inspect mysql | grep IPAddress
Run Code Online (Sandbox Code Playgroud)
那么例如:
DATABASE_URL=mysql://root:@the ip adress:3306/dbname?serverVersion=5.7
DATABASE_URL=mysql://root:@172.17.0.3:3306/test?serverVersion=5.7
Run Code Online (Sandbox Code Playgroud)
或者用容器的名称代替 ip 地址