Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python docker compose:容器之间的redis连接被拒绝_Python_Docker_Redis_Containers - Fatal编程技术网

Python docker compose:容器之间的redis连接被拒绝

Python docker compose:容器之间的redis连接被拒绝,python,docker,redis,containers,Python,Docker,Redis,Containers,我正在尝试设置一个docker compose文件,该文件旨在用替换运行多个进程(RQ worker、RQ dashboard和Flask应用程序)的单个docker容器解决方案 主机系统是Debian 8 Linux,我的docker compose.yml如下所示(我删除了所有其他条目以减少错误源): “rq-worker1”是一个Python,试图通过localhost和端口6379连接到redis,但无法建立连接: redis_1 | 1:M 23 Dec 13:06:26.

我正在尝试设置一个docker compose文件,该文件旨在用替换运行多个进程(RQ worker、RQ dashboard和Flask应用程序)的单个docker容器解决方案

主机系统是Debian 8 Linux,我的
docker compose.yml
如下所示(我删除了所有其他条目以减少错误源):

“rq-worker1”是一个Python,试图通过localhost和端口6379连接到redis,但无法建立连接:

redis_1       | 1:M 23 Dec 13:06:26.285 * The server is now ready to accept connections on port 6379
rq-worker1_1  | [2016-12-23 13:06] DEBUG: worker: Registering birth of worker d5cb16062fc0.1
rq-worker1_1  | Error 111 connecting to localhost:6379. Connection refused.
galileoqueue_rq-worker1_1 exited with code 1
docker ps
的输出如下所示:

CONTAINER ID        IMAGE               COMMAND                      CREATED             STATUS              PORTS               NAMES
36cac91670d2        redis:latest        "docker-entrypoint.sh"   14 minutes ago      Up About a minute   6379/tcp                galileoqueue_redis_1
我尝试了一切,从针对本地IPS0.0.0.0/127.0.0.1甚至本地主机运行RQ worker。Stackoverflow上发布的其他解决方案也不适合我(例如)

这是我的
docker信息
输出:

Containers: 25
  Running: 1
  Paused: 0
  Stopped: 24
Images: 485
Server Version: 1.12.5
Storage Driver: aufs
  Root Dir: /var/lib/docker/aufs
  Backing Filesystem: extfs
  Dirs: 436
  Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
  Volume: local
  Network: null bridge host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 13.61 GiB
Name: gp-pc-201
ID: LBGV:K26G:UXXI:BWRH:OYVE:OQTA:N7LQ:I4DV:BTNH:FZEW:7XDD:WOCU

有人知道为什么两个容器之间的连接不起作用吗?

在您的代码中
localhost
from
rq-worker1
rq-worker1
本身,而不是
redis
并且您无法通过连接到
rq-worker1
中的
localhost
来访问
redis:6379
。但是默认情况下,
redis
rq-worker1
在同一个网络中,您可以使用服务名作为该网络中的域名。 这意味着,您可以使用
redis
作为域名从
rq-worker1
连接到
redis
服务,例如:
client.connect((“redis”,6379))


您应该在
rq-worker1
的配置中将
localhost
替换为
redis
,谢谢!这解决了连接错误。我使用了所有Python命令的host参数来连接到“redis”,它工作得非常好。我遇到了类似的问题,试图从django web服务访问redis服务器。对我来说,解决这个问题的方法是在redis_db服务规范中修改docker-compose.yml文件以公开6379端口(我使用这个而不是redis,因为这也是图像名称),然后在我的“web”服务中添加“links:/n-redis_db”(注意其中的新行)。在此之后,我可以从我的web服务内部连接到redis。这里表达的想法帮助我解决了容器间通信问题,错误为:错误99连接到本地主机:6379。无法分配请求的地址
Containers: 25
  Running: 1
  Paused: 0
  Stopped: 24
Images: 485
Server Version: 1.12.5
Storage Driver: aufs
  Root Dir: /var/lib/docker/aufs
  Backing Filesystem: extfs
  Dirs: 436
  Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
  Volume: local
  Network: null bridge host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 13.61 GiB
Name: gp-pc-201
ID: LBGV:K26G:UXXI:BWRH:OYVE:OQTA:N7LQ:I4DV:BTNH:FZEW:7XDD:WOCU