如何配置容器内Symfony5 .env的DATABASE_URL连接本地WAMP数据库
解决方案
方案1:使用Docker内置host-gateway动态映射宿主机地址(推荐)
Docker 20.10及以上版本支持host-gateway关键字,可自动映射宿主机动态IP,无需手动调整配置:
- 调整容器启动命令,新增
--add-host参数,自动将host.docker.internal指向宿主机IP:docker run -ti --rm=true -p 8000:8000 -v %CD%:/opt/src --add-host host.docker.internal:host-gateway [repo]/base-php74-tools:latest /bin/bash - 修改Symfony项目
.env文件的数据库连接配置:DATABASE_URL="mysql://root:@host.docker.internal:3306/keuken?serverVersion=5.7" - 补充两项必要校验:
- 打开WAMP的MySQL配置文件
my.ini,确认bind-address参数设置为0.0.0.0,而非默认的127.0.0.1,否则MySQL仅允许本地访问 - 检查Windows防火墙设置,新增3306端口的入站规则,放行Docker虚拟网卡网段的访问请求
- 打开WAMP的MySQL配置文件
方案2:固定本地Windows私有IP
如果不想修改容器启动参数,可直接为本地网卡配置静态IP:
- 打开Windows「网络和共享中心」→ 点击当前使用的网卡 →「属性」→ 选中「Internet 协议版本4(TCP/IPv4)」
- 手动配置固定IP、子网掩码、网关、DNS信息,配置完成后本地IP不会动态变更,原有基于IP的数据库连接配置可长期使用
方案3:使用Docker Compose简化配置管理
后续如果需要简化启动流程,可新增docker-compose.yml配置文件,将端口映射、卷挂载、host配置等参数统一写入文件,后续只需执行docker-compose up即可启动服务,无需每次输入长命令。
内容的提问来源于stack exchange,提问作者MisterLexisDev
相关产品推荐
相关产品推荐

