docker-compose:从docker容器访问localhost

时间:2018-05-22 09:47:43

标签: docker docker-compose

我有一个在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的重定向无法按预期工作,因为与数据库的连接在容器内部失败。你能帮我理解出了什么问题吗?

1 个答案:

答案 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