Docker-compose Postgres 连接被拒绝

我正在运行Postgres数据库与pg管理员和GO在泊坞窗撰写。


问题:我可以从 pg 管理员连接到 Postgres。但无法从 Go 建立连接。


我尝试了身份验证字符串的不同组合,但它不起作用。字符串格式与此处相同 https://github.com/karlkeefer/pngr - 但容器名称不同 -database


(错误)连接选项:


backend_1         | 2021/08/08 14:24:40 DB connection: database://main:fugZwypczB94m0LP7CcH@postgres:5432/temp_db?sslmode=disable

backend_1         | 2021/08/08 14:24:40 Unalble to open DB connection: dial tcp 127.0.0.1:5432: connect: connection refused

(URI 生成与此处相同 https://github.com/karlkeefer/pngr)


码头工人:


version: '3.8'

services:

  backend:

    restart: always

    build: 

      context: backend

      target: dev

    volumes:

      - ./backend:/root

    ports:

      - "5000:5000"

    env_file: .env

    depends_on: 

      - database

  database:

    build: database

    restart: always

    environment:

      POSTGRES_DB: ${POSTGRES_DB}

      POSTGRES_USER: ${POSTGRES_USER}

      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}

      PGDATA: /var/lib/postgresql/data

    volumes:

      - ./database/data:/var/lib/postgresql/data

      - ./logs/databse:/var/log/postgresql

      - ./database/migrations:/docker-entrypoint-initdb.d/migrations

    ports:

      - "5432:5432"

  database-admin:

    image: dpage/pgadmin4:5.5

    restart: always

    environment:

      PGADMIN_DEFAULT_EMAIL: ${PG_ADMIN_EMAIL}

      PGADMIN_DEFAULT_PASSWORD: ${PG_ADMIN_PASSWORD}

      PGADMIN_LISTEN_PORT: 80

    ports:

      - "8080:80"

    volumes:

      - ./database/admin:/var/lib/pgadmin

    links:

      - "database:pgsql-server"

    depends_on: 

      - database

volumes:

  database:

  database-admin:

环境:


POSTGRES_HOST=postgres

POSTGRES_PORT=5432

POSTGRES_DB=temp_db

POSTGRES_USER=main

POSTGRES_PASSWORD=fugZwypczB94m0LP7CcH

PG_ADMIN_EMAIL=admin@temp.com

PG_ADMIN_PASSWORD=ayzi2ta8f1TnX3vKQSN1

PG_ADMIN_PORT=80

GO 代码:


db, err = sqlx.Open("postgres", str)


冉冉说
浏览 235回答 1
1回答

手掌心

将数据库主机名引用为 () 这很好,但容器/服务名称为 。postgresPOSTGRES_HOST=postgresdatabase将 from 中的名称更改为 或添加显式字段:compose.yamldatabasepostgreshostnamedatabase:&nbsp; build: database&nbsp; restart: always&nbsp; hostname: postgres&nbsp; &nbsp;# <- add this您可能还希望为多个容器服务添加专用网络,以便彼此通信(或阻止其他容器服务相互通信)。为此,请将其添加到要使用特定网络的每个服务中,例如database:&nbsp; # ...&nbsp; networks:&nbsp; &nbsp; - mynetbackend:&nbsp; # ...&nbsp; networks:&nbsp; &nbsp; - mynet并定义网络在compose.yamlnetworks:&nbsp; mynet:&nbsp; &nbsp; name: my-shared-db-network
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go