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

Symfony 5.3环境下使用Doctrine与Docker部署MariaDB时出现'Temporary failure in name resolution'错误的解决

解决Docker环境下Symfony Doctrine创建数据库的DNS解析错误

我之前也碰到过一模一样的问题!在Docker中部署了Nginx+PHP+MariaDB的Symfony开发环境后,尝试用Doctrine创建数据库时,执行php bin/console doctrine:database:create直接抛出了这个错误:

[critical] Error thrown while running command "doctrine:database:create". Message: "An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution"

当时我的配置如下:

.env 数据库配置

DATABASE_URL="mysql://admin:symfony-admin@db/symfony_test?serverVersion=mariadb-10.1"

docker-compose.yml 配置

version: "3.6"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./code:/code
      - ./site.conf:/etc/nginx/conf.d/site.conf
    depends_on:
      - php
  php:
    build: .
    volumes:
      - ./code:/code
    links:
      - db
  db:
    image: mariadb:latest
    restart: always
    ports:
      - "33006:3306"
    volumes:
      - ./db:/docker-entrypoint-initdb.d/
    environment:
      MYSQL_ROOT_PASSWORD: 'symfony-root-pwd'
      MYSQL_DATABASE: 'symfony_db'
      MYSQL_USER: 'admin'
      MYSQL_PASSWORD: 'symfony-admin'

而且我用Adminer能正常登录数据库,就唯独Doctrine这条命令跑不通。

后来终于找到了解决方案:必须在PHP Docker容器内部执行Doctrine命令,而不是本地终端,具体步骤如下:

  1. 先进入PHP容器的命令行:
docker-compose exec php /bin/bash
  1. 进入容器后,再运行创建数据库的命令:
php bin/console doctrine:database:create

原因很直观:本地环境无法解析db这个Docker服务名,只有Docker内部的虚拟网络才能识别这个域名,所以让Doctrine在PHP容器内执行,就能通过内部网络正常连接到MariaDB容器了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:42:39