无法从golang Docker容器连接到Postgres数据库

时间:2020-09-25 13:46:27

标签: postgresql docker go docker-compose

我正在尝试连接到另一个存储Go服务器的单独容器中的单独容器中的Postgres数据库:

Pool, err = pgxpool.Connect(context.Background(),"postgres://postgres:postgres@postgres:5432/postgres")

这样做之后,我收到以下错误:

2020/09/25 13:40:08 failed to connect to `host=postgres user=postgres database=postgres`: hostname resolving error (lookup postgres on 192.168.65.1:53: no such host)

这里是docker-compose.yml

version: "3.8"
services:
  postgres:
    image: postgres:alpine
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    ports:
      - 5432:5432
    restart: always
  server:
    build: .
    depends_on:
      - postgres
    ports:
      - "2302:2302"
      - "80:80"
    restart: always

我可以从操作系统成功连接到Postgres数据库。这是Postgres容器初始化日志:

postgres_1  | 
postgres_1  | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_1  | 
postgres_1  | 2020-09-25 15:37:50.529 UTC [1] LOG:  starting PostgreSQL 13.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.3.0) 9.3.0, 64-bit
postgres_1  | 2020-09-25 15:37:50.529 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres_1  | 2020-09-25 15:37:50.529 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres_1  | 2020-09-25 15:37:50.532 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1  | 2020-09-25 15:37:50.536 UTC [20] LOG:  database system was shut down at 2020-09-25 15:37:49 UTC
postgres_1  | 2020-09-25 15:37:50.540 UTC [1] LOG:  database system is ready to accept connections

任何线索都会有所帮助。预先谢谢你。

1 个答案:

答案 0 :(得分:2)

尝试共享网络

version: "3.8"
services:
    postgres:
        image: postgres:alpine
        environment:
        - POSTGRES_DB=postgres
        - POSTGRES_USER=postgres
        - POSTGRES_PASSWORD=postgres
        ports:
        - 5432:5432
        restart: always
        networks: [ "go_develop" ]

    server:
        build: .
        depends_on:
        - postgres
        ports:
        - "2302:2302"
        - "80:80"
        restart: always
        networks: [ "go_develop" ]

networks:
    go_develop:
        driver: bridge