当我试图将AdonisJS部署到数字海洋或Azure时,我得到了这个错误
[ioredis] Unhandled error event: Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
我的Adonis应用程序需要Redis才能运行。我使用的是Digital Ocean的Redis实例。这是我的Redis生产配置。
prod: {
host: Env.get("REDIS_HOST"),
port: Env.get("REDIS_PORT"),
password: Env.get("REDIS_PASSWORD"),
db: 0,
keyPrefix: ""
},
如果要将AdonisJS应用程序连接到受传输层安全性(TLS(保护的Redis实例,则需要将tls
主机添加到配置中。
所以,你的产品配置应该像这个
prod: {
host: Env.get("REDIS_HOST"),
port: Env.get("REDIS_PORT"),
password: Env.get("REDIS_PASSWORD"),
db: 0,
keyPrefix: "",
tls: {
host: Env.get("REDIS_HOST"),
},
},
作为我评论的后续内容-我的docker环境降级到我甚至无法通过redis-cli连接到vanilla dockerhub redis映像的地步。我最终清理了我的docker环境,删除了所有容器、图像、卷、网络等,然后重新启动了我的mac。重建后,这个问题对我来说消失了。
我讨厌不知道";根本原因";但是有一个理论。我一直在玩一些不同的Redis镜像,包括dockerhub中的香草独立镜像和https://github.com/Grokzen/docker-redis-cluster.我正在调整后者的构建以添加身份验证。理论上,由于反复建造和拆除,港口仍有剩余的争夺过程。在调试dockerfile
和docker-entrypoint.sh
文件时,我可能已经不耐烦了,并多次硬停止了我正在处理的容器。:(
我知道这个答案与在DO或Azure上托管没有直接关系,但由于症状相同,也许某个地方存在网络冲突。