Резюме: я не могу получить доступ к redis-cli из моего развернутого приложения nodejs, я подозреваю, что redis не упаковывается в док-контейнер, в котором выполняется мой код.
Есть ли способ выполнить целевую командную строкудля моего хост-сервера, а не выполнения в докере?Могу ли я получить доступ к redis-cli из контейнера Docker?
У меня есть приложение nodejs, которое я развернул в экземпляре Google Compute Engine.Экземпляр был создан с помощью bitnami debian nodejs, который включает в себя redis.
Я использую следующий модуль для выполнения redis cli const {exec} = require ('child_process');
Redis работает иЯ могу получить и установить ключи из моего кода, используя API nodejs.
Однако, чтобы выполнить массовую вставку ключей, мне нужно выполнить следующую команду из порожденного процесса ... cat filname.txt |redis-cli --pipe, где имя файла содержит мои ключи в правильном формате.
Все это работает, когда я запускаю прямо на сервере.Однако, когда я использую Google Cloud deploy, я теряю доступ к Redis-Cli.Конкретная ошибка, возвращаемая процессом: ... / bin / sh: 1: redis-cli: not found
Я подозреваю, что это связано с тем, что при развертывании мой код выполняется в контейнере Docker.Находясь в контейнере Docker, я все еще могу получить доступ к Redis через 127.0.0.1, но теряю возможность доступа к нему из командной строки.
Полная команда и сообщение об ошибке:
выполнение команды:
cat /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' }