Установка пакетов из публичных репозиториев GitHub в контейнер докеров

Поскольку большую часть моей программистской жизни моим основным языком был PHP, сейчас я пытаюсь познакомиться с экосистемами node и javascript.

Мне пришлось создать свой собственный модуль, основанный на каком-то неподдерживаемом пакете узлов. Вдобавок я forked репозиторий GitHub. Более опытные ребята сказали мне, что я могу установить свой модуль прямо из репозитория.

И тогда я совершил свою первую ошибку: я добавил свой репозиторий как URL из GitHub ssh. Нравится:

{
  "dependencies": {
    "riek": "[email protected]:galileo/riek.git#branch_name"
  }
}

Это будет работать, если вы используете хост-машину, полностью оборудованную вашими сертификатами ssh и т. Д. Если нет, вы увидите такую ошибку:

npm ERR! Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts.
npm ERR! Permission denied (public key).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

Вы можете заставить его работать, включив свои сертификаты в контейнер докеров, например, если вам нужно получить частные репозитории. Но в целом это не рекомендуется и не безопасно.

Решение простое. Следуйте правилам из документации npm (да, следуйте документации!) Npm git dependencies

[email protected]:galileo/riek.git#branch_name
git://github.com/galileo/riek.git#branch_name

И это должно сработать.

В. Почему это происходит даже с общедоступными репозиториями?

Потому что, если мы используем протокол ssh вместо https, GitHub заставляет нас войти в систему, даже если мы хотим загрузить репозиторий apublic.