首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker-compose Redis在0.0.0.0而不是127.0.0.1

Docker-compose Redis在0.0.0.0而不是127.0.0.1
EN

Stack Overflow用户
提问于 2016-02-11 21:45:24
回答 3查看 8.4K关注 0票数 8

我已经将我的Rails应用程序(本地开发机器)迁移到了。除了Worker Rails实例(批处理)无法连接到Redis之外,所有操作都在工作。

代码语言:javascript
复制
Completed 500 Internal Server Error in 40ms (ActiveRecord: 2.3ms)

Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)):

在我的船坞里-Compose.yml

代码语言:javascript
复制
redis:
  image: redis
  ports:
    - "6379:6379"

batch:
  build: .
  command: bundle exec rake environment resque:work QUEUE=*
  volumes:
    - .:/app
  links:
    - db
    - redis
  environment:
    - REDIS_URL=redis://redis:6379

我认为Redis实例可以通过Docker主机的IP获得。

代码语言:javascript
复制
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                       SWARM   DOCKER    ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.10.0

通过0.0.0.0访问不起作用

代码语言:javascript
复制
$ curl 0.0.0.0:6379 
curl: (7) Failed to connect to 0.0.0.0 port 6379: Connection refused

我认为通过对接机IP进行访问是可行的:

代码语言:javascript
复制
$ curl http://192.168.99.100:6379
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'

编辑

在批处理实例中安装 redis -cli之后,我能够使用'redis‘主机名访问redis服务器。我认为问题可能在于Rails配置本身。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-13 11:03:44

面部表情!

码头集装箱通讯很好,问题是我没有告诉Resque (使用Redis的应用程序)在哪里找到它。谢谢你的“真实法案”指出我应该使用码头-cli。

对于使用Docker和Resque的其他任何人,您需要在您的config/initializers/resque.rb文件中这样做:

代码语言:javascript
复制
Resque.redis = Redis.new(host: 'redis', port: 6379)
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
票数 5
EN

Stack Overflow用户

发布于 2016-02-11 22:26:34

如果你跑

代码语言:javascript
复制
docker-compose run --rm batch env | grep REDIS

您将获得容器拥有的env变量(撰写过程中的链接行将自动生成一些变量)。那么你所需要做的就是寻找一个沿着_REDIS_1_PORT.并使用正确的。我从来没有幸运地以任何其他方式将我的铁路连接到另一个服务。但幸运的是,这些env变量总是在启动时生成的,因此它们将是最新的,即使容器IP在初创企业之间发生了变化。

票数 2
EN

Stack Overflow用户

发布于 2016-02-12 17:55:54

您应该使用主机名redis连接到服务,尽管您可能需要等待redis启动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35350679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档