首页 > 解决方案 > 在另一个 docker 容器中访问一个 docker 容器的 localhost 端口

问题描述

我想通过使用从 service2 容器内部访问 service1 localhost:5432。怎么能这样?

这是我的 docker compose 目前的样子:

services:
  service1:
    image: postgres:12
    ports:
      - '172.10.1.1:5432:5432'
    expose:
      - '5432'
    environment:
      - POSTGRES_USER=project
      - POSTGRES_PASSWORD=pass
    volumes:
      - db_data:/var/lib/postgresql/data
  service2:
        build: .
        ports:
          - '172.10.1.1:1234:1234'

请注意,我知道我可以通过使用service1:5432或仅访问它service1。但如果可能的话,我想使用localhost

标签: dockerdocker-composecontainers

解决方案


这是不可能的,因为每个容器都有自己的 ip。

但是有一个解决方法:将网络设置为主机。因此这些端口在主机上是开放的,并且可以通过127.0.0.1. 不能在 Windows 上工作。

但我不知道你为什么喜欢使用localhostpostgres 的任何充分理由?您是否尝试通过身份验证localhost?不要那样做 - 改用密码。


推荐阅读