নিম্নলিখিত পরিষেবাগুলির সাথে আমার একটি অ্যাপ রয়েছে:
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.
- আপনি এটি কিভাবে পরীক্ষা করেছেন?