【问题标题】:Can't connect to docker redis无法连接到 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 上侦听并且不允许端口转换正确发生?

标签: docker spring-boot redis


【解决方案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 访问它。或者给它一个网络别名。
猜你喜欢
  • 2022-01-07
  • 2023-02-10
  • 2019-01-08
  • 2017-03-12
  • 1970-01-01
  • 2020-01-09
  • 2020-06-03
  • 2019-12-10
  • 2021-10-25
相关资源
最近更新 更多