2015-01-08 37 views
5

Bir node.js uygulamasının dockerize edilmesi için bu eğiticiyi takip ediyorum ve Dockerfile uygulamasında her zaman 'npm install' bölümünde başarısız oluyor. http://docs.docker.com/examples/nodejs_web_app/NPM yükleme hatası, Docks on CentOS

alıyorum hata aşağıda gösterilmiştir: Burada adresten elde edebilirsiniz ben birden çok kaynak aradık

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 

ve ben npm 'bulamıyorum neden emin değilim package.json 'dosyası. Ayrıca bir ubuntu 14.04 görüntü ile aynı kurulum yaptım ve bu da işe yaramadı, ama ben el ile görüntüye gitmek ve nodejs sunucusunu kendim başlatırsam çalışır.

Docker veya npm ile daha fazla deneyimi olan herhangi biri bu konuda yardımcı olabilir, bu harika olur.

Teşekkürler!

+0

/src/package.json var mı? İsim veya başka bir karakter yok mu? – vogonistic

+0

Bu dockerın üstünde, bu komutu çalıştıran resmin bir resim kimliğini basmış olacaksınız. “Docker run {image_id}/bin/bash' sonra' ls' ve package.json var mı diye bak. – generalhenry

+0

@vogonistic Evet /src/package.json dosyam var ve düzgün yazıldığından, npm dosyayı bulamadığı için herhangi bir fikriniz var mı? – Jamaal

cevap

3

Aynı sorunu yaşıyordum, Docker öğreticisinin biraz belirsiz olduğunu ve KOPY'nin davranışını anlamadıysanız dizin ağacını sıkıştırmayı kolaylaştırır.

bu dizin ağacı vardı:

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

Docker görüntüde aşağıdaki ağaçta COPY . /src sonuç komut:

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

Yani temelde, aynı klasörde package.json ve index.js koymak senin Dockerfile ve iyi çalışması gerekir. Böyle bir başarısız yapı ayıklarken


Bir başka şey, sen konteyner çalışmıyorken bile dizin ağacında bir göz olması görüntü kimliğini kullanabilirsiniz. Örneğin, aşağıdaki docker build çıktıyı verilen:

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

sen/src dizini incelemek ve neyin yanlış gittiğini görmek için docker run --rm 3084f3523d93 ls -lR /src çalışabilmesi için bu durumda görüntü kimliği, 3084f3523d93 olduğunu. Alternatif olarak, ls -lR /src yerine /bin/bash kullanın ve bir kabuk alın ve etrafa sarın.