如何通过数据库客户端访问Docker卷中运行的PostgreSQL数据库
问题描述
我有一个已配置Docker的ASP.NET 8 WebAPI项目,API容器和存储PostgreSQL数据的Docker卷均可正常运行,API能通过接口获取数据库中的数据。但我希望查看该Docker卷对应的数据库,使用Visual Studio Code的PostgreSQL插件(Chris Kolkman开发的PostgreSQL管理工具)可以连接本地安装的PostgreSQL,但无法连接Docker中运行的这个数据库。
我的docker-compose.yml配置如下:
services: #asp.net web application webapp: container_name: shop-back-api build: context: . dockerfile: Dockerfile ports: - "5999:5999" environment: - ASPNETCORE_ENVIRONMENT=Development - Database__ConnectionStrings__DefaultConnection=Host=db;Port=5432;Database=shopback;Username=postgres;Password=XXXXX #postreSQL database db: container_name: shop-back-db image: postgres:latest ports: - "5432:5432" environment: POSTGRES_DB: shopback POSTGRES_USER: postgres POSTGRES_PASSWORD: XXXXX volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data:
我还安装了VSCode Docker扩展,能查看镜像、容器和卷,但不确定如何借此访问数据库。
解决方案
方法一:通过VSCode PostgreSQL插件直接连接
你的docker-compose.yml已经将PostgreSQL容器的5432端口映射到本地5432端口,直接用本地地址即可连接:
- 打开VSCode的PostgreSQL插件,点击「Add Connection」
- 填写以下连接参数:
- 主机:
localhost(或127.0.0.1) - 端口:
5432 - 数据库:
shopback - 用户名:
postgres - 密码:你配置的
XXXXX
- 主机:
- 保存连接后即可正常访问数据库。
方法二:通过Docker命令行进入容器操作
如果插件连接异常,可以直接进入PostgreSQL容器的命令行操作:
- 打开终端,执行命令进入容器的PostgreSQL交互环境:
docker exec -it shop-back-db psql -U postgres -d shopback - 进入后可直接执行SQL命令,例如:
- 查看所有表:
\dt - 查询表数据:
SELECT * FROM your_table_name;
- 查看所有表:
方法三:利用VSCode Docker扩展快速进入容器
借助已安装的Docker扩展,可快速打开容器终端操作数据库:
- 在VSCode的Docker扩展面板中找到
shop-back-db容器 - 右键点击容器,选择「Attach Shell」,打开容器终端
- 在终端中执行
psql -U postgres -d shopback,进入数据库交互环境后即可操作。
内容的提问来源于stack exchange,提问作者David Pugh
相关产品推荐
相关产品推荐

