Docker-PostgreSQL无法连接到服务器:连接被拒绝127.0.0.1:5432

Docker-PostgreSQL无法连接到服务器:连接被拒绝127.0.0.1:5432,postgresql,docker,symfony,docker-compose,Postgresql,Docker,Symfony,Docker Compose,尝试停靠我的Symfony 4应用程序,运行PostgreSQL 但当我跑步时: $ sudo docker-compose build 我有一个错误: 在AbstractPostgreSQLDriver.php第73行: 驱动程序中发生异常:SQLSTATE[08006][7]无法连接到服务器:连接被拒绝: 服务器是否在主机“127.0.0.1”上运行并接受 端口上的TCP/IP连接5432 这是我的docker compose.yml文件: version: '3.7' services

尝试停靠我的Symfony 4应用程序,运行PostgreSQL

但当我跑步时:

$ sudo docker-compose build
我有一个错误:

在AbstractPostgreSQLDriver.php第73行:

驱动程序中发生异常:SQLSTATE[08006][7]无法连接到服务器:连接被拒绝:
服务器是否在主机“127.0.0.1”上运行并接受
端口上的TCP/IP连接5432

这是我的
docker compose.yml
文件:

version:  '3.7'
services:
  db:
    image: ${POSTGRES_IMAGE}
    restart: always
    environment:
      POSTGRES_DB: ${DATABASE_NAME}
      POSTGRES_USER: ${DATABASE_USER}
      POSTGRES_PASSWORD: ${DATABASE_PASSWORD}

  php:
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
    restart: on-failure
    user: 1000:1000
    volumes:
      - ./docker/php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
      - .:/var/www/symfony
    working_dir: /var/www/symfony
    depends_on:
      - db
我的
.env
文件的内容

DATABASE_NAME=db
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_USER=postgres
DATABASE_PASSWORD=root

## Docker images (name and version)
PHP_IMAGE=php:7.3-fpm
POSTGRES_IMAGE=postgres
供参考

$ sudo docker-compose config
我的
Dockerfile

FROM php:7.3-fpm

WORKDIR /var/www/symfony

RUN apt-get update

# Install Postgres PDO
RUN apt-get install -y libpq-dev \
 && apt-get install -y zip \
 && docker-php-ext-install pgsql pdo_pgsql \
 && apt-get install -y git

RUN pecl install apcu

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('SHA384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php --filename=composer \
    && php -r "unlink('composer-setup.php');" \
    && mv composer /usr/local/bin/composer

RUN ls -larth
COPY . /var/www/symfony

RUN PATH=$PATH:/var/www/symfony/vendor/bin:bin

RUN pwd \
    && ls \
    && composer install --no-interaction --no-ansi --optimize-autoloader\
    && php bin/console doctrine:database:create \
    && php bin/console doctrine:schema:update --no-interaction \
    && php bin/console doctrine:fixtures:load --no-interaction
有人知道它为什么会这样吗?如何解决呢


搜索了很多,但没有找到任何有效的。虽然
依赖于:db
会起作用,但不。

您问题中的粘贴说明了使用
docker compose.yml
文件需要解决的一些问题:

  • 您缺少一个
    env\u文件:
    您的
    .env
    文件的条目
  • 您缺少
    php
    服务的
    图像
  • 指定为生成上下文(应该是一个指示
    Dockerfile
    所在位置的目录)
  • 指定一个路径作为Dockerfile(应该是文件名,而不是目录)——我想这可能都可以,但读起来有点混乱
  • -db
    -/home/debian/dev/symfony:/var/www/symfony:rw
    的缩进已关闭--这可能不是问题,但仍然难以读取
  • 根据您关于
    build
    失败并出现无法连接到数据库的错误的问题,您能否更新您的问题并为symfony共享您的
    Dockerfile
    ?我怀疑您需要删除对数据库连接的引用。

    尝试运行:

    docker-compose ps
    

    设置数据库\主机=容器名称

    DATABASE_NAME=db
    DATABASE_HOST=## paste Container name
    DATABASE_PORT=5432
    DATABASE_USER=postgres
    DATABASE_PASSWORD=root
    
    ## Docker images (name and version)
    PHP_IMAGE=php:7.3-fpm
    POSTGRES_IMAGE=postgres
    

    你好,谢谢你的留言。(1) 由于我的
    docker compose.yml
    与我的
    .env
    文件在根目录中,我认为它不会改变任何东西,它会自动检测到它否?(2) 我的图像在我的
    Dockerfile
    中,我没有共享,但我添加到了我的问题消息(3)似乎仍然有效,但好吧,我会注意这个(4)它是一个文件否?不明白你为什么说这是个目录?(5) 好的,我添加了
    Dockerfile
    谢谢!
    DATABASE_NAME=db
    DATABASE_HOST=## paste Container name
    DATABASE_PORT=5432
    DATABASE_USER=postgres
    DATABASE_PASSWORD=root
    
    ## Docker images (name and version)
    PHP_IMAGE=php:7.3-fpm
    POSTGRES_IMAGE=postgres