你知道为什么我在尝试从一个容器运行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
这显示了正确的端口连接。
1条答案
按热度按时间chhkpiq41#
您的python应用程序正在尝试与localhost上的redis对话,但redis容器位于不同的localhost上。
您应该能够使用中配置的链接
docker run ...
命令,即redisdb
,供host
选项