如何在部署期间修复 Adonisjs 中的 ECONNRESET ioredis 错误
How to fix the ECONNRESET ioredis error in Adonisjs during deployment
当我尝试将 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 连接到香草 dockerhub Redis 图像的程度。我通过删除所有容器、图像、卷、网络等来清理我的 docker 环境,然后重新启动我的 mac。重建它们后,这个问题对我来说就消失了。
我讨厌不知道“根本原因”,但有一个理论。我一直在玩一些不同的 Redis 镜像,包括来自 dockerhub 的普通独立镜像和来自 https://github.com/Grokzen/docker-redis-cluster 的集群镜像。我正在调整后者的构建以添加身份验证。该理论认为,由于反复构建和拆卸,残留进程争夺端口。在调试 dockerfile
和 docker-entrypoint.sh
文件时,我 可能 不耐烦并多次停止我正在处理的容器。 :)
我知道这个答案与在 DO 或 Azure 上托管没有直接关系,但由于症状相同,可能某处存在网络冲突。
当我尝试将 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 连接到香草 dockerhub Redis 图像的程度。我通过删除所有容器、图像、卷、网络等来清理我的 docker 环境,然后重新启动我的 mac。重建它们后,这个问题对我来说就消失了。
我讨厌不知道“根本原因”,但有一个理论。我一直在玩一些不同的 Redis 镜像,包括来自 dockerhub 的普通独立镜像和来自 https://github.com/Grokzen/docker-redis-cluster 的集群镜像。我正在调整后者的构建以添加身份验证。该理论认为,由于反复构建和拆卸,残留进程争夺端口。在调试 dockerfile
和 docker-entrypoint.sh
文件时,我 可能 不耐烦并多次停止我正在处理的容器。 :)
我知道这个答案与在 DO 或 Azure 上托管没有直接关系,但由于症状相同,可能某处存在网络冲突。