这个docker-compose.yml
似乎运作正常:
version: '3'
services:
web:
image: web-app
command: bundle exec rackup
ports:
- "9292:9292"
links:
- redis
redis:
image: redis
命令:
docker build -t web-app .; docker-compose up
Web App期待REDIS_URL配置。 Web App Dockerfile:
ENV REDIS_URL redis:6379
似乎Web App无法连接到Redis:
Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):
那么,Web应用程序的Redis URL是什么?
我是否需要公开Redis端口(6379)?
编辑:
感谢@Andy Shinn,我看到redis网址应为redis://6379
现在我得到Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379
。这可能与Redis v 3.2.8有关。我会尝试另一个版本,看看它是否有效。
编辑#2:
3.2.8可以在我的本地计算机上使用该应用程序,但这不是问题。
答案 0 :(得分:18)
问题是redis
是“变量”,将在Dockerfile中进行插值。
ENV REDIS_URL redis:6379
但Redis网址应以 文字 redis
开头。
所以,修复程序正在更新docker compose:
redis_db:
image: redis:3.2.8
所需的配置是:
REDIS_URL=redis://redis_db:6379
感谢BMitch和Andy Shinn帮助我解决这个问题。