2015-10-23 31 views
6

Tôi đang sử dụng Docker soạn và đây là tập tin yaml tôiLàm thế nào để cài đặt ngụm trên Docker với Docker-soạn

web: 
    dockerfile: Dockerfile-dev 
    build: . 
    command: gulp 
    volumes: 
    - .:/app 
    ports: 
    - '9001:9001' 

và đây là tập tin Docker tôi

FROM node:0.12.7 

RUN npm install -g bower gulp 

ADD . /app 
WORKDIR /app 

RUN bower install --allow-root 

Sau đó, tôi chạy

docker-compose -f docker-compose-dev.yml build 
docker-compose -f docker-compose-dev.yml up 

Nhưng tôi gặp lỗi sau

Recreating web_web_1... 
Attaching to web_web_1 
web_1 | [07:39:08] Local gulp not found in /app 
web_1 | [07:39:08] Try running: npm install gulp 
web_web_1 exited with code 1 
Gracefully stopping... (press Ctrl+C again to force)**strong text** 

Tôi đã thử thêm dòng RUN npm install gulp trước và sau khi WORKDIR /app để có được nó được cài đặt tại địa phương nhưng tôi nhận được các lỗi tương tự

Trợ giúp

+0

Tôi không biết gì về ngụm, nhưng Dockerfile bạn nên kết thúc với một 'CMD' hoặc' EntryPoint 'Tôi nghĩ rằng, hãy xem https://docs.docker.com/reference/builder/#cmd và https://docs.docker.com/reference/builder/#entrypoint – user2915097

Trả lời

7

Bạn cần phải chạy npm install gulp SAU WORKDIR /app, vì vậy ngụm được cài đặt tại địa phương theo số node_modules/gulp. Nhưng bạn đã làm điều đó và có cùng một lỗi. Đó là bởi vì trong số docker-compose-dev.yml, bạn đang gắn thư mục lưu trữ là /app khối lượng bên trong vùng chứa docker. Thay đổi cục bộ trong thư mục/app bị mất khi bạn đang chạy vùng chứa.

Bạn có thể xóa khối lượng từ docker-compose-dev.yml hoặc chạy npm install gulp trong máy chủ.

+0

Đây là điểm trên, cảm ơn rất nhiều. tôi có nghĩa là đã dành 1,5 ngày làm việc trên –

+0

Đây là nó. Việc xóa phần 'volume' đã làm cho vùng chứa chạy. Cảm ơn. – Francisco

0

Bạn có thể tạo startup.sh

npm install bower gulp 
bower install --allow-root 

(hoặc bất cứ điều gì bạn cần để chạy khi ngọn lửa container) sau đó Dockerfile bạn nên thực hiện startup.sh

... 
CMD ["/startup.sh"] 

kịch bản khởi động sẽ được thực hiện sau khi các dir được gắn bởi docker-compose.

Tôi cũng xin đề nghị để gắn node_modules trong hệ thống tập tin tạm thời tuyên bố trong Docker-compose.yml:

volumes: 
- .:/app 
- /app/node_modules 
Các vấn đề liên quan