Symfony项目Docker部署PostgreSQL主机名解析错误求助
问题解决方法
核心原因
你在本地终端直接执行make:migration命令时,本地系统无法解析Docker内部的postgres主机名——这个主机名只有Docker容器所在的内部网络才能识别。
解决步骤
1. 进入PHP容器内部执行命令
这是最直接的解决方式,所有需要连接数据库的Symfony命令都应该在PHP容器内执行:
docker-compose exec php bin/console make:migration
2. 额外排查点(若上述方法无效)
- 确认服务运行状态:先检查postgres容器是否正常启动
状态显示docker-compose ps postgresUp才代表服务正常运行。 - 检查网络归属:默认docker-compose会为所有服务创建并加入同一个默认网络,若你手动配置了网络,需确保
php和postgres服务在同一网络下。 - 等待数据库初始化完成:
depends_on仅保证postgres在php之前启动,但不保证数据库服务完全就绪。若执行命令时postgres还在初始化,可等待10-20秒后重试,或在php容器的启动脚本中加入等待数据库就绪的逻辑。 - 修正serverVersion参数:你的PostgreSQL使用的是13版本,但连接URL中写的
serverVersion=15,虽不是当前错误的直接原因,但建议修正为对应版本避免后续问题:DATABASE_URL="postgresql://root:root@postgres:5432/mydb?serverVersion=13&charset=utf8"
内容的提问来源于stack exchange,提问作者tolga
相关产品推荐
相关产品推荐

