为了账号安全,请及时绑定邮箱和手机立即绑定

Docker-compose Postgres 连接被拒绝

Docker-compose Postgres 连接被拒绝

Go
冉冉说 2022-09-19 17:11:19
我正在运行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=disablebackend_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:       - databasevolumes:  database:  database-admin:环境:POSTGRES_HOST=postgresPOSTGRES_PORT=5432POSTGRES_DB=temp_dbPOSTGRES_USER=mainPOSTGRES_PASSWORD=fugZwypczB94m0LP7CcHPG_ADMIN_EMAIL=admin@temp.comPG_ADMIN_PASSWORD=ayzi2ta8f1TnX3vKQSN1PG_ADMIN_PORT=80GO 代码:db, err = sqlx.Open("postgres", str)
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

将数据库主机名引用为 () 这很好,但容器/服务名称为 。postgresPOSTGRES_HOST=postgresdatabase


将 from 中的名称更改为 或添加显式字段:compose.yamldatabasepostgreshostname


database:

  build: database

  restart: always

  hostname: postgres   # <- add this

您可能还希望为多个容器服务添加专用网络,以便彼此通信(或阻止其他容器服务相互通信)。为此,请将其添加到要使用特定网络的每个服务中,例如


database:

  # ...


  networks:

    - mynet


backend:

  # ...


  networks:

    - mynet

并定义网络在compose.yaml


networks:

  mynet:

    name: my-shared-db-network


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信