摘要:我怀疑无法从已部署的nodejs应用程序访问redis-cli,因为redis并未打包到我的代码在其中运行的docker容器中。
无论如何,是否有执行针对我的主机服务器的命令行而不是在docker内部执行的命令行? 我可以从docker容器中访问redis-cli吗?
我有一个nodejs应用程序,可以将其部署到Google计算引擎实例。 该实例是使用包含Redis的bitnami debian nodejs创建的。
我使用以下模块执行redis cli const {exec} = require('child_process');
Redis正在运行,我可以使用nodejs api从代码中获取和设置密钥。
但是,要批量插入键,我需要从生成的进程中执行以下命令... 猫filname.txt | redis-cli-管道 在filename中,我的密钥的格式正确。
当我直接在服务器上运行时,所有这些都有效。但是,当我使用Google Cloud Deployment时,我无法访问redis-cli。该过程返回的特定错误是... / bin / sh:1:redis-cli:找不到
我怀疑这是因为部署时,我的代码在Docker容器中执行。在docker容器中,我仍然可以通过127.0.0.1访问redis,但是无法从命令行访问它。
完整的命令和错误消息:
执行命令:
猫/tmp/test.txt | redis-cli --pipe
{ Error: Command failed: cat /tmp/test.txt | redis-cli --pipe
/bin/sh: 1: redis-cli: not found
at ChildProcess.exithandler (child_process.js:294:12)
at ChildProcess.emit (events.js:189:13)
at maybeClose (internal/child_process.js:970:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
killed: false,
code: 127,
signal: null,
cmd:
'cat /tmp/test.txt | redis-cli --pipe' }