2015-01-08 36 views
5

Tôi đang làm theo hướng dẫn này để cập nhật ứng dụng node.js và nó luôn thất bại ở phần 'npm install' trong Dockerfile. Dưới đây là liên kết để hướng dẫn: http://docs.docker.com/examples/nodejs_web_app/Lỗi cài đặt NPM khi chạy Docker trên CentOS

Các lỗi tôi nhận được hiển thị dưới đây:

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 

Tôi đã tìm kiếm nhiều nguồn khác nhau và tôi không chắc chắn lý do tại sao NPM không thể tìm thấy ' tệp package.json '. Tôi cũng đã thực hiện các thiết lập tương tự ngoại trừ một hình ảnh 14.04 ubuntu và điều đó không hoạt động, hoặc, nhưng nó hoạt động nếu tôi tự đi vào hình ảnh và bắt đầu máy chủ nodejs bản thân mình.

Nếu bất kỳ ai có nhiều kinh nghiệm hơn với docker hoặc npm đều có thể giúp đỡ về vấn đề này.

Cảm ơn!

+0

Hiện /src/package.json có tồn tại không? Không có nhân vật phụ trong tên hoặc bất cứ điều gì? – vogonistic

+0

Ngay phía trên docker đó sẽ in ra một ID hình ảnh của hình ảnh nó đang chạy lệnh đó. 'Docker run {image_id}/bin/bash' rồi' ls' và xem liệu package.json có tồn tại hay không. – generalhenry

+0

@vogonistic Có tập tin /src/package.json của tôi không tồn tại và nó được viết đúng cách, có bất kỳ ý tưởng tại sao npm không thể tìm thấy tập tin? – Jamaal

Trả lời

3

Tôi đã gặp vấn đề tương tự này, hóa ra hướng dẫn Docker có chút mơ hồ và dễ dàng điều chỉnh cây thư mục nếu bạn không hiểu hành vi của COPY.

Tôi có cây thư mục này:

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

Lệnh COPY . /src kết quả trong cây sau đây trong hình ảnh Docker:

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

Vì vậy, về cơ bản, đưa package.jsonindex.js trong thư mục tương tự như của bạn Dockerfile và nó sẽ hoạt động tốt.


Một điều khác, khi gỡ lỗi xây dựng không thành công như thế này, bạn có thể sử dụng ID hình ảnh để xem nhanh cây thư mục ngay cả khi vùng chứa không chạy. Ví dụ, do docker build đầu ra sau đây:

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

Hình ảnh ID trong trường hợp này là 3084f3523d93, vì vậy bạn có thể chạy docker run --rm 3084f3523d93 ls -lR /src để kiểm tra thư mục/src và xem những gì đã xảy ra. Ngoài ra, hãy sử dụng /bin/bash thay cho ls -lR /src để lấy vỏ và vuốt xung quanh.

Các vấn đề liên quan