从外部连接到 docker 容器中的 Postgresql 数据库主机

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

我对docker知之甚少,所以如果我的问题看起来很愚蠢,我提前道歉。

我的数据库位于 docker 容器中,我想从我的 API 访问它,该 API 不在容器中,而是在我的机器本地。

所以我需要从 Docker 外部访问我的数据库。

这是我的

docker-compose
文件:

version: '3.9'
services:
  db:
    image: postgres:16.2
    restart: always
    shm_size: 128mb
    container_name: db
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_DB=sa
      - POSTGRES_HOST_AUTH_METHOD=trust
      - POSTGRES_PASSWORD=root
    ports:
      - 33306:3306

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

从我的 API 中,我指定以下 url:

spring.datasource.url=jdbc:postgresql://127.0.0.1:33306/sa

尽管我进行了大量测试,但我总是遇到同样的错误:

The connection attempt failed

我的docker运行正常,我可以从docker容器访问我的数据库并创建表等。

我的问题只是来自外部的连接。

我还尝试使用此命令连接 telnet:

telnet 127.0.0.1 33306

这是我的错误:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

我还使用此命令来运行我的 docker :

docker-compose up -d            

你能帮我理解我做错了什么吗?

提前致谢。

postgresql spring-boot docker devops
1个回答
0
投票

Docker 自动映射默认的 PostgreSQL 服务器端口 5432,而不是 3306。

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