symfony 无法将主机名“postgres”转换为地址:提供了节点名或服务名,或未知

z18hc3ub  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(156)

在我的symfony项目中,我为postgresql创建了一个docker容器:

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"

我错过了什么?

2ic8powd

2ic8powd1#

我认为您错过了设置内部容器网络。它不是默认设置。
phppostgres服务加入网络(例如internal):

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

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

网络定义的最后一点故意留为空白-我们假设默认网桥模式,但您可以定义任何您喜欢的模式。

相关问题