无法连接到 docker redis

Posted

技术标签:

【中文标题】无法连接到 docker redis【英文标题】:Can't connect to docker redis 【发布时间】:2018-07-12 08:54:48 【问题描述】:

我有一个包含下一张图片的 docker-compose 文件:

redis:
    image: redis
    container_name: redis
    ports:
      - 6379:6379

我预计容器名称将被公开,我将能够使用 redis:6379 uri 进行连接,但我做不到。这是配置:

fun jedisLocalConnectionFactory(): JedisConnectionFactory 
    val jedisConFactory = JedisConnectionFactory()
    jedisConFactory.hostName = "redis"
    jedisConFactory.port = 6379
    return jedisConFactory

如何暴露这个redis服务并连接到它?我尝试了很多不同的组合,没有任何运气..

【问题讨论】:

如果你shell进入容器,你能看到redis是否真的在监听6379端口吗?试试'netstat -na |当你进入那里时,grep 6379'。可能是它只在 localhost 上侦听并且不允许端口转换正确发生? 【参考方案1】:

使用容器名称连接只能使用用户定义的网络。这是从 Docker 文档中捕获的

Docker 不支持在默认网桥 >network 上自动发现服务。如果您希望容器通过容器名称解析 IP 地址,>您应该改用用户定义的网络。 https://docs.docker.com/engine/userguide/networking/

以此为参考:

services:
  springboot:
    image: springboot
    networks:
      - my-net

  redis:
    image: redis
    container_name: redis
    ports:
      - 6379:6379
    networks:
      - my-net

networks:
  my-net:
    driver: bridge

【讨论】:

谢谢!我从这个例子中添加了 my-net。我可以使用哪个 uri 访问服务? 您可以直接以redis 访问它。或者给它一个网络别名。

以上是关于无法连接到 docker redis的主要内容,如果未能解决你的问题,请参考以下文章

无法从外部 docker 连接到 dockerized redis 实例

Docker 容器无法连接到 Redis

Django无法连接到docker中的redis

无法从 docker 容器内的 Spring Boot 连接到 Redis

芹菜工人无法连接到 docker 实例上的 redis

节点无法通过 Docker Compose 连接到 Redis