首页 > 解决方案 > Docker compose,从另一个容器访问 Postgres 容器

问题描述

我有一个非常简单的设置,一个容器中的 Web 应用程序和另一个容器中运行的 Postgres 服务。

我需要连接到 Postgres 容器并认为PGHOST="db"会指向该容器..?

但我一直Error: getaddrinfo ENOTFOUND "db" at GetAddrInfoReqWrap.onlookup认为我读的是;找不到“db”主机...

我在这里想念什么?

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8081:3011"
    links:
      - db
    environment:
      - PGHOST="db"
      - PGDATABASE="testdb"
      - PGUSER="postgres"
      - PGPASSWORD="postgres"
  db:
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - /usr/local/var/postgresql@13

标签: node.jspostgresqldockerdocker-compose

解决方案


试试这个配置。传递环境变量时不需要引号。最好在depends_on此处使用以确保在您的应用程序启动之前 DB 已启动并运行。

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8081:3011"
    depends_on:
      - db
    environment:
      - PGHOST=db
      - PGDATABASE=testdb
      - PGUSER=postgres
      - PGPASSWORD=postgres
  db:
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - /usr/local/var/postgresql@13

推荐阅读