无法使用 postgres 和 docker 创建数据库

Can't create database with postgres and docker

我正在尝试使用以下命令在我的应用程序中创建一个数据库: php bin/console doctrine:database:create

之后我得到一个错误: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?

我的 docker-compose 文件看起来像这样:

version: '3'

services:

  php:
    container_name: symfony_php
    build:
      context: ./php
    volumes:
      - ./symfony/:/var/www/symfony/
    depends_on:
      - database
    networks:
      - symfony

  database:
    container_name: symfony_postgres
    image: postgres
    restart: always
    hostname: symfony_postgres
    environment:
      POSTGRES_DB: symfony_db
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
    ports:
      - "5432:5432"
    volumes:
      - ./postgres:/var/lib/postgres
    networks:
      - symfony

  pgadmin:
    container_name: symfony_pgadmin
    image: dpage/pgadmin4
    restart: always
    ports:
      - "5555:80"
    depends_on:
      - database
    links:
      - database
    environment:
      PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
      PGADMIN_DEFAULT_PASSWORD: root
    networks:
      - symfony

  nginx:
    container_name: symfony_nginx
    image: nginx:stable-alpine
    build:
      context: ./nginx
      dockerfile: Dockerfile-nginx
    volumes:
      - ./symfony:/var/www/symfony
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - database
    networks:
      - symfony

networks:
  symfony:

我没有使用任何 postgres 配置文件,根据 Symfony 文档,.env 中有一个配置行: DATABASE_URL="postgresql://root:root@127.0.0.1:5432/symfony_db?serverVersion=11&charset=utf8"

我 运行 netstat 命令,我得到: tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 我认为在我的应用程序服务器是 运行 postgres 的地方绑定我的本地主机地址存在问题。有谁知道,我该如何解决?

在 docker-compose 中,所有服务都可以通过其名称访问。

您需要将数据库主机地址更改为 数据库 - 作为 docker-compose

中的服务名称
DATABASE_URL="postgresql://root:root@database:5432/symfony_db?serverVersion=11&charset=utf8"