Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 无法翻译主机名“;博士后;地址:名称或服务未知_Postgresql_Docker_Docker Compose - Fatal编程技术网

Postgresql 无法翻译主机名“;博士后;地址:名称或服务未知

Postgresql 无法翻译主机名“;博士后;地址:名称或服务未知,postgresql,docker,docker-compose,Postgresql,Docker,Docker Compose,我正在尝试运行一个依赖于postgresql数据库的服务,但我不知道如何将两者链接在一起/连接 我“依赖”数据库,这似乎意味着我应该能够使用服务名称作为数据库主机名(即due\u database),但每当我这样做时,我就会得到错误: 无法将主机名“到期数据库”转换为地址:名称或服务未知 这里怎么了 version: '3' services: due: restart: always build: context: ./ dockerfile: ./

我正在尝试运行一个依赖于postgresql数据库的服务,但我不知道如何将两者链接在一起/连接

我“依赖”数据库,这似乎意味着我应该能够使用服务名称作为数据库主机名(即
due\u database
),但每当我这样做时,我就会得到错误:

无法将主机名“到期数据库”转换为地址:名称或服务未知

这里怎么了

version: '3'
services:
  due:
    restart: always
    build:
      context: ./
      dockerfile: ./docker/bot/Dockerfile
    command: ./due
    depends_on:
      - due_database
  due_database:
    build:
      context: ./
      dockerfile: ./docker/database/Dockerfile
    ports:
        - "5432:5432"
    environment:
      - POSTGRES_PASSWORD="docker"
    entrypoint: /entry.sh
    volumes:
      - ./.dueutil_db:/dueutil_data
更新

version: '2.1'
services:
  due:
    restart: always
    build:
      context: ./
      dockerfile: ./docker/bot/Dockerfile
    entrypoint: /entry.sh
    command: ./due
    depends_on:
      due_database:
        condition: service_healthy
    environment:
      - PGPASSWORD="docker"
  due_database:
    image: postgres:11
    ports:
        - "5432:5432"
    environment:
      - POSTGRES_PASSWORD="docker"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - ./.dueutil_db:/var/lib/postgresql/data

我通过将create数据库脚本移到postgres图像之外修复了第一个问题,因为这与postgres入口点冲突。 但是,我仍然不知道如何从我的应用程序容器连接到数据库

我目前正在尝试
psql-U postgres-h due\U database postgres-f
,但我刚刚得到:

psql: could not connect to server: Connection refused
    Is the server running on host "due_database" (172.18.0.2) and accepting
    TCP/IP connections on port 5432?
注意:我确实看到了:但是这个问题似乎过时了&没有得到任何好的答案。

尝试使用,我不确定,但也许它可以帮助您:

version: '3'
# ----------------
# CREATE NEW NETWORK
networks:
  app:
    driver: bridge
# ----------------
services:
  due:
    restart: always
    build:
      context: ./
      dockerfile: ./docker/bot/Dockerfile
    command: ./due
    depends_on:
      - due_database
    # ---------------
    # SPECIFY NETWORK
    networks:
      - app
    # ---------------

  due_database:
    build:
      context: ./
      dockerfile: ./docker/database/Dockerfile
    ports:
        - "5432:5432"
    environment:
      - POSTGRES_PASSWORD="docker"
    entrypoint: /entry.sh
    volumes:
      - ./.dueutil_db:/dueutil_data
    # ---------------
    # SPECIFY NETWORK
    networks:
      - app
    # ---------------

因此,我的第一个问题是尝试对PostgreSQL映像进行更改,复制一些脚本并添加自定义入口点。这会覆盖postgres启动脚本&意味着数据库无法加载


第二个问题是使用非高山postgres图像。切换到
postgres:12.1-apline
“刚刚工作”。我不确定另一张图片有什么问题

系统的哪个部分正在尝试建立连接?(特别是,它是否在docker文件中?)docker compose.yml文件看起来非常合理。请发布docker network ls和docker network inspect的输出,检查列出的网络。另外,检查due_数据库容器是否在此期间停止。