我有一个在docker容器内运行的服务。此服务需要访问在另一个集群中运行的数据库(我使用kubectl port-forward
,之后我访问localhost:5432
中的数据库)
这是我的docker-compose
文件
version: '3'
services:
api:
build: .
ports:
- "8000:8000"
- "5432:5432"
environment:
- APP_PORT=8000
- DB_SERVER=localhost
- DB_PORT=5432
- DB_USER=postgres
- DB_PASSWORD=mypassword
似乎端口5432
的重定向无法按预期工作,因为与数据库的连接在容器内部失败。你能帮我理解出了什么问题吗?
答案 0 :(得分:2)
在目前的情况下, localhost 是 api 容器地址。您必须将 DB_SERVER 设置为正确的地址。您的服务和数据库必须位于同一个docker网络中,然后您可以使用内部docker地址解析器。之后,您应该设置DB_SERVER = postgres。另一种方法是,您可以将DB_SERVER设置为您的主机地址。
这是你在docker-compose中定义网络的方法: https://docs.docker.com/compose/networking/#use-a-pre-existing-network