【问题标题】:How to correctly config docker-compose to connect to localhost (non-docker service) [duplicate]如何正确配置 docker-compose 以连接到 localhost(非 docker 服务)[重复]
【发布时间】:2021-09-30 12:29:23
【问题描述】:

我是 Docker 新手。我正在构建一个部署在 Docker 上的 Spring Boot 应用程序。

这是我的例子docker-compose.yml:

version: "3"

services:

  user:
    container_name: user
    image: user-service
    build:
      context: user-api/
    ports:
      - "3001:8000"
    restart: always
    volumes: 
      - /home/ubuntu/logs/user_service:/opt/app/logs
    networks:
      - api_network

  cms:
    container_name: cms
    image:cms-service
    build:
      context: cms-service/
    ports:
      - "3003:8000"
    restart: always  
    volumes: 
      - /home/ubuntu/logs/cms_service:/opt/app/logs
    networks:
      - api_network

networks:
  api_network:
    driver: bridge

在服务器机器中,有一个在 Ubuntu 上运行的 Redis 服务器。我无法将 Docker 容器中的 Redis 服务器连接到主机。

这是我在 application.properties

中的 redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=Password123!@#

我也尝试将本地主机更改为

  • 127.0.0.1
  • 172.17.0.1
  • 0.0.0.0
  • 主持人
  • host.docker.internal

这是我在网上找到的。但没有任何效果。我是否需要专门配置任何东西以允许我在 Docker 中的 Spring Boot 服务连接到在 localhost 上运行的 Redis。

【问题讨论】:

  • @РоманСергеевич extra_hosts: - "host.docker.internal:host-gateway" 不适合我。
  • 尝试添加 extra_hosts: - "localhost:127.0.0.1" 里面 docker-compose 仍然无法正常工作。
  • Redis 服务器非常轻量级;您可以将 Redis 容器添加到您的docker-compose.yml,而不是尝试超出 Docker 空间吗? Docker 中的localhost 通常表示“这个容器”(因此在这个问题中,localhost 具有三种不同的上下文特定含义)。
  • @DavidMaze 感谢您的建议。我会和 Infra 团队讨论这个问题。

标签: spring docker docker-compose redis


【解决方案1】:

问题是可能因为您的 Redis 绑定到地址 127.0.0.1(这是默认配置)并且您的容器未在 network 主机上运行。 p>

要解决这个问题,您应该重新配置 Redis 以绑定到 127.0.0.1 以及从 api_network 看到的主机的 IP 地址(主机上的 sudo ip addr show):最简单如果您的方案允许,这里要做的就是将 Redis 绑定到 0.0.0.0(通过 redis.conf)。

作为替代方案,您可能还希望在 host 网络上运行容器,而不是使用 api_network 网桥:顺便说一下,根据您的问题,这似乎有点过头了,而且可能会导致安全问题和暴露的网络端口。

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2020-03-16
    • 1970-01-01
    • 2016-08-10
    • 2020-04-27
    • 2016-02-02
    相关资源
    最近更新 更多