无法连接到 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的主要内容,如果未能解决你的问题,请参考以下文章