我对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
你能帮我理解我做错了什么吗?
提前致谢。
Docker 自动映射默认的 PostgreSQL 服务器端口 5432,而不是 3306。