मेरे पास निम्नलिखित सेवाओं वाला एक ऐप है:
web/
- पोर्ट 5000 पर एक अजगर 3 फ्लास्क वेब सर्वर रखता है और चलाता है। sqlite3 का उपयोग करता है।worker/
- एकindex.js
फाइल है जो एक कतार के लिए एक कार्यकर्ता है। वेब सर्वर पोर्ट पर एक json एपीआई का उपयोग करके इस कतार के साथ सहभागिता करता है9730
। कार्यकर्ता भंडारण के लिए लालियों का उपयोग करता है। कार्यकर्ता भी फ़ोल्डर में स्थानीय रूप से डेटा संग्रहीत करता हैworker/images/
अब यह सवाल केवल चिंता का विषय है worker
।
worker/Dockerfile
FROM node:0.12
WORKDIR /worker
COPY package.json /worker/
RUN npm install
COPY . /worker/
docker-compose.yml
redis:
image: redis
worker:
build: ./worker
command: npm start
ports:
- "9730:9730"
volumes:
- worker/:/worker/
links:
- redis
जब मैं दौड़ता हूं docker-compose build
, तो सब कुछ अपेक्षा के अनुसार काम करता है और सभी npm मॉड्यूल स्थापित होते हैं /worker/node_modules
जैसे मैं उम्मीद करता हूं।
npm WARN package.json unfold@1.0.0 No README data
> phantomjs@1.9.2-6 install /worker/node_modules/pageres/node_modules/screenshot-stream/node_modules/phantom-bridge/node_modules/phantomjs
> node install.js
<snip>
लेकिन जब मैं करता हूं docker-compose up
, मुझे यह त्रुटि दिखाई देती है:
worker_1 | Error: Cannot find module 'async'
worker_1 | at Function.Module._resolveFilename (module.js:336:15)
worker_1 | at Function.Module._load (module.js:278:25)
worker_1 | at Module.require (module.js:365:17)
worker_1 | at require (module.js:384:17)
worker_1 | at Object.<anonymous> (/worker/index.js:1:75)
worker_1 | at Module._compile (module.js:460:26)
worker_1 | at Object.Module._extensions..js (module.js:478:10)
worker_1 | at Module.load (module.js:355:32)
worker_1 | at Function.Module._load (module.js:310:12)
worker_1 | at Function.Module.runMain (module.js:501:10)
कोई भी मॉड्यूल चालू /worker/node_modules
(होस्ट में या कंटेनर में) मौजूद नहीं है।
अगर मेजबान पर, मैं npm install
, तो सब कुछ ठीक काम करता है। लेकिन मैं ऐसा नहीं करना चाहता। मैं चाहता हूं कि कंटेनर निर्भरता को संभालें।
यहाँ क्या गलत हो रहा है?
(कहने की जरूरत नहीं, सभी पैकेज अंदर हैं package.json
।)
volumes: - worker/:/worker/
से ब्लॉक निकालने का प्रयास करें docker-compose.yml
। यह रेखा उस फ़ोल्डर को अधिलेखित करती है जिसे आप COPY कमांड से बनाते हैं।
When I run docker-compose build, everything works as expected and all npm modules are installed in /worker/node_modules as I'd expect.
- आपने इसकी जाँच कैसे की?