为了账号安全,请及时绑定邮箱和手机立即绑定

容器内的 Python 代码无法访问第二个容器内的 Redis

容器内的 Python 代码无法访问第二个容器内的 Redis

千万里不及你 2023-03-30 10:16:41
上下文:我正在尝试通过 Docker 容器运行一个基于 Plotly-Dash/Flask 的 Web 应用程序,该应用程序连接到在第二个容器内运行的 Redis 服务器。我正在尝试仅通过我的应用程序来实现与此示例接近的东西。所以我在我的项目文件夹中:videoblender.py名为包内的主要应用程序apps一个名为Dockerfile一个名为docker-compose问题:当我通过命令运行我的程序时docker-compose up --build,构建成功,然后我得到一个错误提示如下[Errno -3] Temporary failure in name resolution。我尝试过的:我尝试从上面的链接运行示例,这是我想要实现的简化示例,并且它有效。所以问题似乎出在我具体实现的某个地方。我的代码在容器外运行良好,本地 redis 服务器运行在localhost:6379. 当我在本地运行它时,我将host值分配给 Redis 对象构造函数的参数0.0.0.0,或者localhost,哪个都无关紧要。附加信息和文件:docker-compose.yml :version: '0'services:  web:    build: .    ports:      - "8003:8003"  redis:    image: "redis:alpine"Dockerfile我的网络应用程序的文件:FROM python:3.6-slim# copy needed thingsADD pocs /code/pocsADD apps /code/appsADD requirements.txt /codeADD setup.py /codeWORKDIR /code# libgl1-mesa-glx is needed for openCVRUN apt-get update && \    apt install -y libglib2.0-dev libsm6 libxext6 libxrender1 && \    apt-get clean && \    rm -rf /var/lib/apt/lists/*RUN pip install -r requirements.txtRUN pip install .CMD ["python", "apps/videoblender.py"]引发异常的代码:class RedisAccess(object):        def __init__(self, host='redis', port=6379, db=0):        self.redis_server = redis.Redis(host=host, port=port, db=db)在主python代码中调用videoblender.pyra = RedisAccess()
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

在 docker-compose.yml 的 web 部分下,添加:

links:
  - redis



查看完整回答
反对 回复 2023-03-30
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信