You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API Platform 3.2连接本地数据库时出现pwa主机解析错误

API Platform 3.2 连接本地数据库的问题与解决办法

问题背景

  • 受影响版本:API Platform 3.2
  • 需求:生产环境运行API Platform时,弃用Docker内置数据库服务,改用宿主机本地数据库
  • 操作:执行启动命令时指定compose.yaml和compose.prod.yaml配置文件,同时在compose.prod.yaml中为php服务设置network_mode: "host"以共享宿主机网络
  • 启动后出现DNS解析错误,日志如下:

"duration":0.013162129

"err_id":"y7f98si24"
"err_trace":"reverseproxy.statusError (reverseproxy.go:1267)"
"level":"error"
"logger":"http.log.error.log0"
"msg":"dial tcp: lookup pwa on 212.227.123.16:53: no such host"

启动命令:

SERVER_NAME=preprod.website.fr
APP_SECRET=a_secret_key
CADDY_MERCURE_JWT_SECRET=ChangeThisMercureHubJWTSecretKey
docker compose -f compose.yaml -f compose.prod.yaml  up --wait

错误原因

当给php服务设置network_mode: "host"后,容器直接使用宿主机的网络栈,脱离了Docker默认的桥接网络。Docker内部的服务域名(比如pwa)依赖Docker内置的DNS服务解析,而宿主机的DNS无法识别这些内部域名,因此出现找不到pwa主机的错误。

解决办法

放弃直接给php服务设置host网络模式,通过添加socat代理服务实现容器访问本地数据库,同时保持php服务在Docker默认网络中,确保能正常解析内部服务域名。更新后的compose.prod.yaml配置如下:

proxy-relay:
    image: alpine/socat:latest
    network_mode: host
    command: TCP-LISTEN:3306,fork,bind=host.docker.internal TCP-CONNECT:127.0.0.1:3306   
    extra_hosts:
      - host.docker.internal:host-gateway
  php:
    build:
      context: ./api
      target: frankenphp_prod
    environment:
      APP_SECRET: ${APP_SECRET}
      MERCURE_PUBLISHER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET}
      MERCURE_SUBSCRIBER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET}
      DATABASE_URL: mysql://${MARIADB_USER:-myuser}:${MARIADB_PASSWORD:-mypassword}@host.docker.internal:3306/${MARIADB_DATABASE:-mydatabase}?serverVersion=mariadb-${MARIADB_VERSION:-10.11.6}&charset=utf8mb4
    extra_hosts:
      - host.docker.internal:host-gateway

配置说明

  • proxy-relay服务:使用socat工具做端口转发,将容器侧的3306端口请求转发到宿主机的3306端口;network_mode: host让该服务直接使用宿主机网络,extra_hosts配置确保host.docker.internal指向宿主机网关,从而能访问本地数据库。
  • php服务:移除network_mode: "host"配置,通过extra_hosts让容器能识别host.docker.internal,并在DATABASE_URL中使用该地址连接本地数据库,同时保留在Docker默认网络中,正常解析内部服务域名。

内容的提问来源于stack exchange,提问作者Victoria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:20:17