2015-01-08 12 views
5

Podążam za tym samouczkiem, aby dokować daną aplikację node.js i zawsze kończy się niepowodzeniem w części "npm install" w pliku Dockerfile. Oto link do tutoriala: http://docs.docker.com/examples/nodejs_web_app/Błąd instalacji NPM z uruchomionym portem Docker na CentOS

Błąd Dostaję przedstawiono poniżej:

npm ERR! install Couldn't read dependencies 
npm ERR! Error: ENOENT, open '/src/package.json' 
npm ERR! If you need help, you may report this log at: 
npm ERR!  <http://github.com/isaacs/npm/issues> 
npm ERR! or email it to: 
npm ERR!  <[email protected]> 

npm ERR! System Linux 3.13.0-43-generic 
npm ERR! command "node" "/usr/bin/npm" "install" 
npm ERR! cwd /src 
npm ERR! node -v v0.10.33 
npm ERR! npm -v 1.3.6 
npm ERR! path /src/package.json 
npm ERR! code ENOENT 
npm ERR! errno 34 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /src/npm-debug.log 
npm ERR! not ok code 0 

Rozglądałem wielu źródeł i nie jestem pewien, dlaczego npm nie może znaleźć " plik package.json. Zrobiłem też tę samą konfigurację, z wyjątkiem obrazu ubuntu 14.04 i to też nie działa, ale działa, gdy ręcznie wchodzę do obrazu i samemu uruchamiam serwer nodejs.

Jeśli ktoś, kto ma większe doświadczenie z portem lub npm, może pomóc w rozwiązaniu tego problemu, który byłby świetny.

Dzięki!

+0

Czy istnieje plik /src/package.json? Brak dodatkowych znaków w nazwie czy cokolwiek? – vogonistic

+0

Zaraz powyżej tego okna dokowanego wydrukowany zostanie identyfikator obrazu, na którym uruchomione jest to polecenie. "Uruchom docker {image_id}/bin/bash', następnie' ls' i zobacz, czy istnieje pakiet.json. – generalhenry

+0

@vogonistic Tak, mój plik /src/package.json istnieje i jest napisany poprawnie, mam pojęcie, dlaczego npm nie może znaleźć pliku? – Jamaal

Odpowiedz

3

Miałem ten sam problem, okazuje się, że tutorial Docker jest nieco niejednoznaczny i ułatwia zepsucie drzewa katalogów, jeśli nie rozumiesz zachowania KOPIOWANIA.

miałem to drzewo katalogów:

workdir/Dockerfile 
workdir/src/package.json 
workdir/src/index.js 

Komenda COPY . /src wyniki w poniższym drzewie w obrazie Docker:

/src/Dockerfile 
/src/src/package.json 
/src/src/index.js 

Więc w zasadzie, umieścić package.json i index.js w tym samym folderze co Dockerfile i powinno działać poprawnie.


Jeszcze jedno, podczas debugowania nieudaną budować tak, można użyć identyfikatora obrazu, aby mieć okiem na drzewie katalogów nawet jeśli pojemnik nie jest uruchomiony. Na przykład, biorąc pod uwagę następujące docker build wyjściowe:

Step 4: RUN cd /src; npm install 
---> Running in 4bce6ad89dab 
---> 3084f3523d93 
ERROR! BAD THINGS! PANIC! 

ID obrazu w tym przypadku jest 3084f3523d93, więc można uruchomić docker run --rm 3084f3523d93 ls -lR /src wglądu do katalogu/src i zobaczyć, co poszło źle. Alternatywnie, użyj /bin/bash zamiast ls -lR /src, aby uzyskać powłokę i pokeić.

Powiązane problemy