gpt4 book ai didi

docker - 从 Docker 镜像中连接到 Redis 服务器

转载 作者:行者123 更新时间:2023-12-02 19:47:58 25 4
gpt4 key购买 nike

我有 2 个主机,一个 Web 单元 (WU) 和一个计算单元 (CU)。在 WU,我有我的网站。在 CU 上,我有一个 redis 服务器和一个 (C++) 应用程序来进行一些计算。
用户在网站中输入输入数据,然后我想将 WU 中的作业排队到 CU 上的 Redis 服务器。然后我在 CU 上有一个执行任务的工作人员。
现在,我可以从终端(使用 python rq 模块)将 WU(在任何 docker 镜像之外)的作业排队到 CU。但是,我的网站位于 docker 镜像中,我无法使其正常工作。在 docker 镜像中,我尝试连接到 172.17.0.1:6370(172.17.0.1 是镜像和 docker 主机之间的网关 IP)。我得到的错误是连接被拒绝。然后我想我可能必须在我的 docker-compose 文件中映射端口:6739:6739。但是,然后我收到一个错误,说该端口已被使用。事实上,它被 stunnel4 服务使用,它允许我将工作从 WU 排队到 CU 上的 redis 服务器。
我应该在 docker 镜像中运行 stunnel4 服务吗?如果是这样,我该怎么做?还是我应该以不同的方式解决我的问题?
网络结构
WU 和 CU 是 2 台(虚拟)机器。我的 redis 服务器在 CU 和 不是 在 docker 容器中。我可以通过 python redis 模块(但不能从 docker 容器内)连接到从 WU 到 CU 的 redis 服务器。我必须设置一个 stunnel4.service为此(WU 上的 redis-client 和 CU 上的 redis-server)。

最佳答案

最后,我设法在 WU 上的 docker 容器中构建了一个 stunnel 服务。我现在可以简单地连接 python redis到那个 stunnel 服务,并且隧道的末端指向 CU。
这是我在 WU 上所做的:
Dockerfile

FROM alpine:3.12
RUN apk add --no-cache stunnel
COPY ./entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
COPY ./ca_file.crt /etc/stunnel/ca_file.crt
ENTRYPOINT ["/entrypoint.sh"]
入口点.sh
#!/bin/sh
cd /etc/stunnel

cat > stunnel.conf <<_EOF_

foreground = yes

[stunnel-client]
client = yes
accept = ${ACCEPT}
connect = ${CONNECT}
CAfile = ca_file.crt
verify = 4

_EOF_

exec stunnel "$@"
ACCEPTCONNECT值在环境文件中指定:
.env.stunnel
ACCEPT=6379
CONNECT=10.110.0.3:6379
在哪里 10.110.0.3是我的 redis 主机的 IP 地址。
docker 撰写
stunnel-client:
container_name: stunnel-client
build:
context: ./stunnel
dockerfile: Dockerfile
restart: always
volumes:
- stunnel_volume:/etc/stunnel
env_file:
- ./.env.stunnel
networks:
- stunnel-net
ports:
- "6379:6379"
stunnel-net也在我的 web服务,所以我可以从那里连接到 stunnel-client通过 python redis 提供服务.

关于docker - 从 Docker 镜像中连接到 Redis 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62493158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com