C++ 从Redis+;连接到Docker中的Redis+;

C++ 从Redis+;连接到Docker中的Redis+;,c++,docker,redis,C++,Docker,Redis,在我的docker compose文件中,redis在6379处公开,reader是一个gcc容器 阅读器: 建造: 上下文:./reader-manager dockerfile:reader\u manager.dockerfile 卷数: -'./读卡器管理器:/avn/读卡器管理器' 取决于: -雷迪斯 redis: 图片:redis 端口: - 6379:6379 在我的C++代码中,我遇到了连接到ReIIS实例的麻烦: auto redis=redis(“tcp://127.0.0

在我的docker compose文件中,redis在6379处公开,
reader
是一个gcc容器

阅读器:
建造:
上下文:./reader-manager
dockerfile:reader\u manager.dockerfile
卷数:
-'./读卡器管理器:/avn/读卡器管理器'
取决于:
-雷迪斯
redis:
图片:redis
端口:
- 6379:6379
<>在我的C++代码中,我遇到了连接到ReIIS实例的麻烦:

auto redis=redis(“tcp://127.0.0.1:6379");
redis.set(“key”、“val”);
这导致

无法连接到Redis:连接被拒绝

环境中的其他容器(如烧瓶)连接到Read,虽然它们使用的是从 ReiS://< /Cord>开始的URL,但是当我尝试C++代码时:

auto redis=redis(“redis://127.0.0.1:6379");
redis.set(“key”、“val”);
我明白了

无效的URI:无效的类型

我还尝试了
unix://
,结果是:

无法连接到Redis:没有这样的文件或目录

不确定这是否重要,但这是读者档案

FROM gcc:latest

RUN apt-get update -y
RUN apt-get install cmake -y

# install/compile hiredis
WORKDIR /avn
RUN git clone https://github.com/redis/hiredis.git
WORKDIR /avn/hiredis
RUN make
RUN make install

# install/compile redis-plus-plus
WORKDIR /avn
RUN git clone https://github.com/sewenew/redis-plus-plus.git
WORKDIR /avn/redis-plus-plus
RUN mkdir compile
WORKDIR /avn/redis-plus-plus/compile
RUN cmake -DCMAKE_BUILD_TYPE=Release -DREDIS_PLUS_PLUS_BUILD_TEST=OFF -DREDIS_PLUS_PLUS_CXX_STANDARD=17 ..
RUN make
RUN make install

# compile and run the program
WORKDIR /avn/reader-manager
CMD make && ../../bin/main

127.0.0.1是一个环回地址。环回地址连接回进行连接的容器。如果C++程序运行在容器中,那么ReDIS就不会在同一个容器中运行。您需要连接到
redis
容器:

auto redis = Redis("tcp://redis:6379");
不过,我不建议在可执行文件中对其进行硬编码。使其可配置