我正在使用 docker 开发一个 symfony 项目,但我遇到了 mysql 问题。 这是我在 .env symfony 中的配置:
DATABASE_URL=mysql://bpp:bpp@127.0.0.1:3306/bdd
当我运行 php bin/console 命令 d: s: u --force 时,数据库更新良好。 通过 cons 当我想注册一个表单时我有一个 symfony 连接错误
这是我的配置 docker :
version: '3.7'
services:
apache:
build: .docker/apache
container_name: bpp_apache
ports:
- "80:80"
volumes:
- .docker/config/vhosts:/etc/apache2/sites-enabled
- ${SYMFONY_APP}:/home/wwwroot/bpp
depends_on:
- php
mysql:
image: mysql:8
container_name: bpp_mysql
volumes:
- ./.docker/data/db:/var/lib/mysql
command:
- "--default-authentication-plugin=mysql_native_password"
- "--lower_case_table_names=1"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
ports:
- "3306:3306"
php:
build: .docker/php
container_name: bpp_php
volumes:
- ${SYMFONY_APP}:/home/wwwroot/bpp
depends_on:
- mysql
links:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: bpp_phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- "8080:80"
谢谢你的帮助。
最佳答案
更改 mysql url 的 .env 配置 来自
DATABASE_URL=mysql://bpp:bpp@127.0.0.1:3306/bdd
到
DATABASE_URL=mysql://bpp:bpp@mysql:3306/bdd
原因在于docker本身。您正在连接两项服务: PHP 和 MySql 在 docker 网络内的不同 IP 地址上运行。每次运行 docker 文件时,都会启动 3 个容器:
- Apache - IP 地址 1
- PHP - IP 地址 2
- MySql - IP 地址 3
MySql 服务不在地址 127.0.0.1 上。将其留给集成的 DNS 服务器。
关于php - mysql 连接 symfony + docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130302/