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

上下文:我正在尝试通过 Docker 容器运行一个基于 Plotly-Dash/Flask 的 Web 应用程序,该应用程序连接到在第二个容器内运行的 Redis 服务器。我正在尝试仅通过我的应用程序来实现与此示例接近的东西。

所以我在我的项目文件夹中:

  1. videoblender.py名为包内的主要应用程序apps

  2. 一个名为Dockerfile

  3. 一个名为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 things

ADD pocs /code/pocs

ADD apps /code/apps

ADD requirements.txt /code

ADD setup.py /code


WORKDIR /code


# libgl1-mesa-glx is needed for openCV

RUN 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.txt


RUN 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.py


ra = RedisAccess()


千万里不及你
浏览 103回答 1
1回答

暮色呼如

在 docker-compose.yml 的 web 部分下,添加:links:   - redis
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python