npm установка не удалась внутри Docker контейнера - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь заставить npm install работать внутри Docker контейнеров в моей системе ...

Я пробовал следующие контейнеры:

  • nikolaik/python-nodejs:python3.8-nodejs12
  • nikolaik/python-nodejs:python3.8-nodejs12-alpine
  • minideb:stretch (установлен с nvm)

И все они имеют одинаковую ошибку. Когда я пытаюсь установить пакет npm, у него будет ошибка, которая выглядит примерно так:

# npm install -g typescript                                                                                                                                                                                      
npm ERR! Unexpected end of JSON input while parsing near '...ipt":"next","tsd":"la'                                                                                                                                

npm ERR! A complete log of this run can be found in:                                                                                                                                                               
npm ERR!     /root/.npm/_logs/2020-04-09T03_42_16_003Z-debug.log

Если я запусту что-то вроде npm cache clean --force и снова введу команду установки, он будет в другой момент происходит сбой при разборе JSON.

Самое смешное, что иногда, если это действительно маленький пакет, он устанавливает его без проблем:

# npm install padleft                                                                                                                                                                                   [12/1883]
npm WARN saveError ENOENT: no such file or directory, open '/package.json'
npm WARN notsup Unsupported engine for padleft@0.2.0: wanted: {"node":"6.3.1","npm":"3.10.6"} (current: {"node":"12.14.1","npm":"6.13.4"})
npm WARN notsup Not compatible with your version of node/npm: padleft@0.2.0
npm WARN enoent ENOENT: no such file or directory, open '/package.json'
npm WARN !invalid#1 No description
npm WARN !invalid#1 No repository field.
npm WARN !invalid#1 No README data
npm WARN !invalid#1 No license field.

+ padleft@0.2.0
added 1 package from 1 contributor and audited 2 packages in 1.472s
found 0 vulnerabilities

Это почти кажется, что он не работает, если он не может установить что-то, если он не загружается очень быстро. Я пробовал разные версии узла / npm с nvm, и все это делает то же самое. На моем хост-компьютере npm работает нормально. Просто возникают проблемы во всех контейнерах Docker. У меня просто не получилось с установленной версией nvm в другом Docker контейнере на основе Ubuntu.

1 Ответ

1 голос
/ 09 апреля 2020

Я могу только догадываться, что Контейнер отбрасывает пакеты.

Попробуйте добавить больше процессоров в контейнеры.

https://docs.docker.com/config/containers/resource_constraints/

Если вы готовы попробовать другие вещи: если вы не выбрали "режим хоста", попробуйте это.

https://docs.docker.com/network/host/

...