当前位置: 首页 > 面试题库 >

Docker-compose-Redis为0.0.0.0而不是127.0.0.1

贡斌
2023-03-14
问题内容

我已经将我的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.html" target="_blank">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-cli 之后,我能够使用“ redis”主机名访问redis服务器。我认为问题可能出在Rails配置本身中。


问题答案:

Facepalm !!!

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

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

Resque.redis = Redis.new(host: 'redis', port: 6379)
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }


 类似资料:
  • 问题内容: 我在Windows Home Edition上使用docker工具带。我正在尝试使用docker- compose将Node与Redis一起使用,当我使用来运行映像(在同一源目录中)时,它运行良好,但是当我尝试使用来运行Node时,我的Node应用程序不是’无法连接到Redis。 抛出: 我相信这是因为我的节点应用程序无法找到Redis,即使当我使用该应用程序正在运行时,我也无法在相应

  • 我使用windows docker工具箱,我很困惑我错过了什么。我想使用redis commander(https://www.npmjs.com/package/redis-Commander)和来自docker Hub的docker图像redis。 我使用了上面链接中的docker-compose.yml: 在 工作,我可以到达服务器和er本地:6379 但是是什么意思 有什么帮助来正确设置这

  • 但是,我需要它从我们的nexus服务中提取:。在docker-compose文件中,我已经使用了正确的nexus图像路径。(通过用docker-compose手动启动它来验证。然而,TestContainers也会拉入docker-compose文件之外的其他图像。正是这些图像导致了失败。 我很高兴Docker Desktop或TestContainers的配置更改能解决这个问题。 注意:我已经尝

  • 我已经通过运行以下命令在CentOS 7上安装了docker, 注意:helloworld运行正常,没有问题。 但是,当我尝试运行(docker-compose.yml存在且有效)时,它只给我CentOS上的错误(Windows版本适用于docker-composefile)

  • 我有一个在节点容器和redis容器中运行的express API。当试图将节点容器连接到redis时,我遇到了以下错误。

  • 问题内容: 我在设置中运行官方Redis镜像https://hub.docker.com/_/redis/。 如何在该图像上使用docker-compose 运行? 我尝试了以下操作,但未连接: 图片的文档说我应该运行: 这是什么意思? 问题答案: 那会覆盖默认值:您试图在从未执行过的容器上运行。 如此处所述,您还可以使用以下方法进行测试: 如这个docker / compose问题2123 所述