Не удалось преобразовать имя хоста «postgres» в адрес: имя узла или имя сервера не указано или неизвестно

В моем проекте symfony я создаю док-контейнер для postgresql:

php:
    build:
        context: "."
        dockerfile: ./docker/php/Dockerfile
    volumes:
        - .:/var/www/symfony:rw
    depends_on:
        - postgres
postgres:
    image: postgres:13-alpine
    environment:
        POSTGRES_USER: root
        POSTGRES_PASSWORD: root
        POSTGRES_DB: mydb
    ports: [5432]  

В моем файле .env я пытаюсь подключиться к базе данных следующим образом:

DATABASE_URL = "postgresql://root:root@postgres:5432/mydb?serverVersion=15&charset=utf8"

Когда я пытаюсь перейти на БД, я получаю следующую ошибку:

[critical] Error thrown while running command "make:migration". Message: "An exception occurred in the driver: SQLSTATE[08006] [7] could not translate host name "postgres" to address: nodename nor servname provided, or not known"

Что мне не хватает?

технически это означает, что имя хоста «postgres» в ...root@postgres... не может быть преобразовано в IP-адрес, поэтому можно добавить его в /etc/hosts или напрямую подключиться к ip, например, 127.0.0.1 ... не совсем уверен, хотя

john Smith 16.01.2023 21:13

Не могли бы вы проверить, возникает ли ошибка, когда вы указываете атрибут hostname с помощью службы postgres, см. docs.docker.com/compose/compose-file/#hostname

Easterwood 16.01.2023 21:41

Это не похоже на правильный файл для создания докеров.

jjanes 17.01.2023 01:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что вы пропустили настройку межконтейнерной внутренней сети. Это не идет по умолчанию.

Присоедините сервисы php и postgres к сети (например, internal):

services:
    php:
        ...
        networks:
            - internal
        ...

    postgres:
        ...
        networks:
            - internal
        ...
networks:
    internal:

Этот последний бит определения сети намеренно оставлен пустым — мы предполагаем режим моста по умолчанию, но вы можете определить любой, который вам нравится.

Да, сеть — это решение.

tolga 17.01.2023 11:03

Другие вопросы по теме