redis.exceptions.connectionerror:连接到localhost:6379时出错99无法分配请求的地址

bihw5rsg  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(664)

你知道为什么我在尝试从一个容器运行redis命令到另一个容器时会出现连接错误吗?我试图在本地运行一个旧的python 2.7 lambda,以便在升级到3.8.10之前进行测试。我正在运行一个脚本,该脚本构建redisdb容器并将其与我的应用程序容器链接:

docker build . -t my_app:latest
docker pull redis:3.2.4-alpine && \
docker run --name=redisdb -d  redis:3.2.4-alpine redis-server
docker run \
    --rm -t -i -d \
    --link redisdb:redis \
    -h redis -p 6379 \
    -e CONFIG_FILE=local_config.yaml \
    my_app

我正在使用以下命令在我的_应用程序上运行python脚本:

r = redis.Redis()
r.mset({"Bahamas": "Nassau"})
print(r.get("Bahamas"))

我在这里也尝试过最重要的建议:错误99连接到本地主机:6379。无法分配请求的地址并传递 r = redis.Redis(host='localhost', port=6379, decode_responses=True) 同样的结果。
每次我尝试在my_app容器中运行python脚本时,我都会得到:

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

当我运行容器,然后检查 docker ps 我明白了:

$ docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED              STATUS              PORTS                     NAMES
76aea9308821   mar-atlas-readings-processor   "python2"                About a minute ago   Up About a minute   0.0.0.0:64098->6379/tcp   mar-atlas-readings-processor
f313113341de   redis:3.2.4-alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp                  redisdb

这显示了正确的端口连接。

chhkpiq4

chhkpiq41#

您的python应用程序正在尝试与localhost上的redis对话,但redis容器位于不同的localhost上。
您应该能够使用中配置的链接 docker run ... 命令,即 redisdb ,供 host 选项

相关问题