- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 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 "$@"
ACCEPT
和
CONNECT
值在环境文件中指定:
ACCEPT=6379
CONNECT=10.110.0.3:6379
在哪里
10.110.0.3
是我的 redis 主机的 IP 地址。
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/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!