首页 > 解决方案 > 在 docker 容器错误中连接到 Postgresql

问题描述

version: '1'

services:

  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: mtuser
      POSTGRES_USER: mtpass
    

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

这是我的码头工人撰写文件。编译时没有错误,docker桌面也没有问题,所有容器都在运行。

但我无法通过 pgAdmin 或 .net 核心连接连接到 Postgresql。

但我可以通过管理员 v4.8.1 连接

标签: postgresqldocker.net-coredocker-compose

解决方案


首先,您使用撰写文件格式有什么特别的原因version: '1'吗?你至少应该使用version: '2',否则会有兼容性问题。请参阅此处的兼容性表。

关于您的问题:您的“db”postgres 服务没有公开任何端口,也没有将 postgres db 端口从容器映射到主机。因此,您无法从 docker 网络之外的任何外部服务访问它。管理员可以连接,因为它在同一个 docker 网络中。但是使用较新的撰写文件格式应该是不可能的,因为同样,您没有在“db”服务上公开任何端口。

该文件应如下所示:

version: '2'

services:

  db:
    image: postgres
    restart: always
    ports:
      - "5432:5432"  #<- Postgres Db port mapped to host machine.
    environment:
      - POSTGRES_PASSWORD=mtuser
      - POSTGRES_USER=mtpass
    

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

推荐阅读