我正在从 Redis 服务器 Docker 容器未运行的外部计算机上的 Spring Boot 应用程序连接到 Redis。当应用尝试连接Redis时,应用无法正常连接,直到发送的请求超时。同时,如果我尝试从以下位置连接:
应用程序属性:
spring.redis.host=pc-1
spring.redis.port=6379
是某些数字 ip 的别名。我正在使用主机功能 窗口对其进行别名/重定向。pc-1
.env:
REDIS_PORT=6379
docker-compose.yml:
redis:
image: redis:latest
ports:
- "${REDIS_PORT}:6379"
command:
# - redis-server
# - --requirepass "${REDIS_PASSWORD}"
networks:
- redis
healthcheck:
test: ["CMD-SHELL", "redis-cli ping"]
interval: 10s
timeout: 10s
retries: 3
我需要有关此问题的帮助。
更新: 我忽略这个问题,因为它目前与我的工作无关。我怀疑这是因为 WSL 错误或功能有限。具体来说,数字IP和字母地址可能使用我一直使用的路由器的连接路由。此外,我的机器不仅通过一个适配器连接。因此,连接的成功可能是随机的。最初询问此问题时,WSL 不支持与路由器的连接。为了支持它,我们需要启用最近实验性的镜像网络功能。
在 docker compose 命令中使用
--service-ports
标志来发布您在 docker compose 文件中定义的端口。
其他调试技巧:
${REDIS_PORT}
变量进行硬编码,以防未设置值或设置默认值,如 ${REDIS_PORT:-default}
docker compose --env-file ./somedir/.env up
那样显式传递 env 文件,以防 env 文件未被拾取我怀疑这是因为 WSL 错误或功能有限。具体来说,数字IP和字母地址可能使用我一直使用的路由器的连接路由。此外,我的机器不仅通过一个适配器连接。因此,连接的成功可能是随机的。最初询问此问题时,WSL 不支持与路由器的连接。为了支持它,我们需要启用最近实验性的镜像网络功能。
链接: