নিম্নলিখিত পরিষেবাগুলির সাথে আমার একটি অ্যাপ রয়েছে:
web/- 5000 বন্দরে অজগর 3 ফ্লাস্ক ওয়েব সার্ভারটি ধারণ করে এবং পরিচালনা করে s sqlite3 ব্যবহার করে।worker/- একটিindex.jsফাইল রয়েছে যা একটি সারির জন্য কর্মী। ওয়েব সার্ভার পোর্টের উপর একটি জসন এপিআই ব্যবহার করে এই সারিটির সাথে ইন্টারঅ্যাক্ট করে9730। কর্ম সঞ্চয়ের জন্য redis ব্যবহার করে। কর্মী ফোল্ডারে স্থানীয়ভাবে ডেটা সঞ্চয় করে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, সবকিছু প্রত্যাশিতভাবে কাজ করে এবং সমস্ত এনপিএম মডিউলগুলি /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, তারপরে সবকিছু ঠিকঠাক কাজ করে। তবে আমি তা করতে চাই না। আমি ধারকটি নির্ভরতাগুলি পরিচালনা করতে চাই।
এখানে কি ভুল হচ্ছে?
(বলা বাহুল্য, সমস্ত প্যাকেজ রয়েছে in 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.- আপনি এটি কিভাবে পরীক্ষা করেছেন?