Docker-compose-Redis为0.0.0.0而不是127.0.0.1

我已经将我的Rails应用程序(本地开发机)迁移到Docker-Compose。除了Worker

Rails实例(批处理)无法连接到Redis之外,其他所有组件都在工作。

Completed 500 Internal Server Error in 40ms (ActiveRecord: 2.3ms)

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

在我的docker-compose.yml中

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获得。

$ 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访问不起作用

$ curl 0.0.0.0:6379 

curl: (7) Failed to connect to 0.0.0.0 port 6379: Connection refused

我认为可以通过docker-machine IP访问:

$ curl http://192.168.99.100:6379

-ERR wrong number of arguments for 'get' command

-ERR unknown command 'Host:'

编辑

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

回答:

Facepalm !!!

泊坞窗容器的通讯正常,问题是我没有告诉Resque(使用Redis的应用程序)在哪里找到它。感谢“ The Real Bill”指出我应该使用docker-

cli。

对于使用Docker和Resque的其他任何人,您都需要在 文件中:

Resque.redis = Redis.new(host: 'redis', port: 6379)

Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }

以上是 Docker-compose-Redis为0.0.0.0而不是127.0.0.1 的全部内容, 来源链接: utcz.com/qa/433978.html

回到顶部