如何将 pg Admin 4 连接到部署在 Docker 容器中的 PostgreSQL

问题描述 投票:0回答:1

我创建了一个 ASP.NET Core 应用程序。此应用程序允许您通过 Entity Framework Core ORM 使用 PostgreSQL 数据库。本地数据库一切正常。当我尝试创建 Docker 应用程序容器和数据库时,问题就开始了。这是我的 docker-compose 文件:

version: '3.4'

services:
  naladimbot:
    image: ${DOCKER_REGISTRY-}naladimbot
    build:
      context: .
      dockerfile: NaladimBot/Dockerfile
    ports:
      - "80:80"
    depends_on:
      - db
    networks:
      - mynetwork  
  db:
    image: postgres:latest
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: 23r2323ffsedsEGDS#%23EAF
      POSTGRES_DB: NaladimBot.Database
    volumes:
      - db:/var/lib/postgresql/
    networks:
      - mynetwork

volumes: 
  db: 

networks:
  mynetwork:
    driver: bridge

这是我在文件 appsettings.json 中的连接字符串:

"ConnectionStrings": {
  "DefaultConnection": "Server=db;Port=5432;Username=postgres;Password=23r2323ffsedsEGDS#%23EAF;Database=NaladimBot.Database;"
}

问题是这样的:当我在 docker-compose 模式下构建应用程序时,一切正常。 Docker Desktop 引入了应用程序容器和数据库。

但是当我尝试通过 pg Admin 4(我也在 Docker 中创建的容器)连接到 db 数据库时,什么也没有发生。 Docker 建议使用

http://localhost:5432/
进行连接,但它不起作用。

我也尝试了 0.0.0.0 、 172.18.0.1 、 172.18.0.2 而不是 localhost - 结果保持不变。

可能是什么问题?

.net postgresql docker docker-compose pgadmin
1个回答
0
投票

这里的服务器

localhost
指的是运行PgAdmin的容器,并且没有postgres运行它。

尝试连接时使用

db
作为主机,因为它们位于同一网络上
mynetwork

© www.soinside.com 2019 - 2024. All rights reserved.