gpt4 book ai didi

php - "Temporary failure in name resolution": Symfony 5. 3 使用 Doctrine 和 Docker 连接到 MariaDB

转载 作者:行者123 更新时间:2023-12-04 14:55:49 27 4
gpt4 key购买 nike

我已经在 docker(nginx、php 和 mariadb)中运行了我的开发环境,并尝试使用 doctrine 在 symfony 中创建一个数据库。当我运行 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 bin/console doctrine:database:create 需要在 php docker 容器中运行,而不是在本地终端中运行。所以首先 docker-compose exec php/bin/bash 然后是 php bin/console doctrine:database:create

最佳答案

可以添加

links:
- db

php 服务配置并将您的 DATABASE_URL 更改为DATABASE_URL="mysql://admin:symfony-admin@db/symfony_db?serverVersion=mariadb-X.X.X"

Service db 将暴露给 php 服务,并且在 php 容器中 db 将成为主机(链接) 到 db 服务

关于php - "Temporary failure in name resolution": Symfony 5. 3 使用 Doctrine 和 Docker 连接到 MariaDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68046453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com