Docker 无法连接到应用程序中的redis容器,但可以ping到该容器

Docker 无法连接到应用程序中的redis容器,但可以ping到该容器,docker,flask,redis,docker-compose,python-3.6,Docker,Flask,Redis,Docker Compose,Python 3.6,我试图从本地计算机上的另一个独立应用程序容器连接到独立容器中的redis服务器 起初,一切都很顺利。然后,我为redis容器创建了一个dockerfile,而不是直接使用官方图像,并将redis配置文件更改为我自己的文件,其中我只将appendonly从no更改为yes。它突然停止工作,出现错误redis.exceptions.ConnectionError:error 111连接到redis:6379。连接被拒绝 这是我的docker-compose.yml version: '3' ser

我试图从本地计算机上的另一个独立应用程序容器连接到独立容器中的redis服务器

起初,一切都很顺利。然后,我为redis容器创建了一个dockerfile,而不是直接使用官方图像,并将redis配置文件更改为我自己的文件,其中我只将appendonly从no更改为yes。它突然停止工作,出现错误redis.exceptions.ConnectionError:error 111连接到redis:6379。连接被拒绝

这是我的docker-compose.yml

version: '3'

services:
  flask:
    build: ./flask
    container_name: flask
    volumes: 
      - ./flask:/src
    expose: 
      - "5000"
    links:
      - redis
    tty: true
    restart: always

  redis:
    build: ./data/redis
    container_name: redis
    expose: 
      - "6379"
    volumes: 
      - ./data/redis:/data
以下是redis的dockerfile:

FROM redis:alpine
COPY ./redis.config /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
以及应用程序的dockerfile:

FROM python:3.6.9-alpine
WORKDIR /src
ADD . /src
RUN apk add python3-dev build-base linux-headers pcre-dev
RUN addgroup -S uwsgi && adduser -S uwsgi -G uwsgi
RUN pip install --no-cache-dir -r requirements.txt
CMD ["uwsgi","app.ini"]
我尝试从应用程序容器ping redis,效果很好

/src # ping redis
PING redis (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.121 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.163 ms
64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.116 ms
64 bytes from 172.18.0.3: seq=3 ttl=64 time=0.166 ms
64 bytes from 172.18.0.3: seq=4 ttl=64 time=0.158 ms
^C
--- redis ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.116/0.144/0.166 ms
还尝试在redis容器中ping应用程序容器,它也起了作用

/data # ping flask
PING flask (172.18.0.4): 56 data bytes
64 bytes from 172.18.0.4: seq=0 ttl=64 time=0.106 ms
64 bytes from 172.18.0.4: seq=1 ttl=64 time=0.162 ms
64 bytes from 172.18.0.4: seq=2 ttl=64 time=0.163 ms
64 bytes from 172.18.0.4: seq=3 ttl=64 time=0.166 ms
64 bytes from 172.18.0.4: seq=4 ttl=64 time=0.143 ms
^C
--- flask ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.106/0.148/0.166 ms
我的简单计数器应用程序的代码是

从应用程序导入应用程序
从redis导入redis
redis=redis(主机=redis',端口=6379)
@应用程序路径(“/”)
def hello():
return f“此合成/烧瓶演示已被查看{redis.incr('hits')}次。”
#返回“你好,世界”
我完全迷路了,不知道如何修复它。我尝试使用默认图像而不使用dockerfile来构建我自己的图像,结果成功了。但是,当前设置与默认图像之间的唯一区别是,我使用了自己的redis.config,其中我所做的唯一更改是将appendonly从“否”更改为“是”。我现在无法连接到redis


有人能帮我一下吗?

当您使用自定义redis.conf时,以及如果您从

  • bind 127.0.0.1
  • 保护模式是
  • 注释此行
    bind127.0.0.1
    并在redis.conf
    protectedmodeno
    中禁用受保护模式

    默认情况下,Official中禁用保护模式