我有在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
的重定向未按预期工作,因为容器内与数据库的连接失败。您能帮我了解出什么问题吗?
最佳答案
在当前上下文中, localhost 是 api 容器地址。您必须将 DB_SERVER 设置为正确的地址。您的服务和数据库必须位于相同的docker网络中,然后才能使用内部docker地址解析器。之后,您应该设置DB_SERVER = postgres。另一种方法是,可以将DB_SERVER设置为主机地址。
这是您可以在docker-compose中定义网络的方法:
https://docs.docker.com/compose/networking/#use-a-pre-existing-network
关于docker - docker-compose:从docker容器访问localhost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50464614/