Как правило, для передачи параметров в контейнер, который будет прочитан вашим сценарием Node.js, вы можете:
Для секретных данных, таких как учетные данные SSH, я бы рекомендовал не использовать , используя аргументы или переменные среды, поскольку их можно проверять из различных источников. Эта статья хорошо объясняет, почему: https://diogomonica.com/2017/03/27/why-you-shouldnt-use-env-variables-for-secret-data/
Вместо этого я бы создал простой файл конфигурации, который может прочитать ваш скрипт Node.js.
{
"username": "myuser",
"password": "pass",
"host": "172.17.0.1",
...
}
Вы можете поместить этот файл в каталог вашей хост-системы и смонтировать его под /myvolume
в контейнер при запуске вашего контейнера:
docker run -it -v host-directory:/myvolume myimage
Ваш скрипт Node.js теперь может читать файл JSON:
const configFilePath = "/myvolume/secret-config.json"
const config = JSON.parse(fs.readFileSync(configFilePath));
// now you can use config.host, config.username and config.password
В качестве дополнительного примечания: я рекомендую настроить удаленный SSH-сервер на использование аутентификации с использованием закрытого / открытого ключа, поскольку пароли обычно менее защищены. После того, как вы настроили аутентификацию с закрытым / открытым ключом, вы можете поместить файл закрытого ключа на тот же том и загрузить его из скрипта Node.js аналогичным образом:)