首页 > 解决方案 > 无法从 docker-compose postgresql 服务连接到 postico

问题描述

我已经完成了 docker-compose up 并且能够运行附加到 postgresql 映像的 Web 服务。问题是,当我尝试访问数据库时,我无法查看 postico 上的数据。图像的名称是 db,当我在连接之前尝试在 postico 上将主机名指定为“db”时,我收到一条错误消息,提示找不到主机名。我已经输入了我的凭据、端口和数据库名称,就像我在我的 docker-compose 文件中键入它们一样。

有人知道我如何在容器内找到正确的连接设置吗?

version: '3.6'
services:
  phoenix:
    # tell docker-compose which Dockerfile it needs to build
    build:
      context: .
      dockerfile: Dockerfile.phoenix.development
    # map the port of phoenix to the local dev port
    ports:
      - 4000:4000
    # mount the code folder inside the running container for easy development
    volumes:
      - ./my_app:/app
    # make sure we start mongodb when we start this service
    # links:
    #   - db
    depends_on:
      - db
      - redis
    environment:
      GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
      GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
      FACEBOOK_CLIENT_ID: ${FACEBOOK_CLIENT_ID}
      FACEBOOK_CLIENT_SECRET: ${FACEBOOK_CLIENT_SECRET}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_USER: ${POSTGRES_USER}
  go:
    build:
      context: .
      dockerfile: Dockerfile.go.development
    ports:
      - 8080:8080
    volumes:
      - ./genesys-api:/go/src/github.com/sc4224/genesys-api
    depends_on:
      - db
      - redis
      - phoenix
  db:
    container_name: db
    image: postgres:latest
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_USER: ${POSTGRES_USER}
    volumes:
      - ./data/db:/data/db
    restart: always
  redis:
    container_name: redis
    image: redis:latest
    ports:
      - "6379:6379"
    volumes:
      - ./data/redis:/data/redis
    entrypoint: redis-server
    restart: always

标签: postgresqldockerdocker-compose

解决方案


使用主机名作为localhost.

您不能db在内部 docker 网络之外使用主机名。这将适用于在同一网络中运行的应用程序。由于您将 db 暴露在 port 上运行5432,因此它是通过暴露的0.0.0.0:5432->5432/tcp,因此可以localhost作为 host 和 port访问5432


推荐阅读