ওয়েবপ্যাক-ডেভ-সার্ভার এবং ডকারের সাথে হট রিলোডলোড কাজ করছে না


10

উবার্টু লিনাক্স ব্যবহার করে ডকার ইনস্টল করা আছে। ভিএম নেই

আমি একটি ভয়েজ অ্যাপ্লিকেশন সহ একটি ডকার চিত্র তৈরি করেছি। গরম পুনরায় লোড সক্ষম করার জন্য আমি এর সাথে ডকারের ধারকটি শুরু করি:

docker run -it -p 8081:8080 -e "HOST=0.0.0.0" -v ${PWD}:/app/ -v /app/node_modules --name my-frontend my-frontend-image

এটি সূক্ষ্ম শুরু হয় এবং আমি এটি আমার হোস্ট ব্রাউজার থেকে এটি অ্যাক্সেস করতে পারি localhost:8081। তবে আমি যখন সোর্স ফাইলগুলিতে পরিবর্তন করি এবং সেই পরিবর্তনগুলি সংরক্ষণ করি তখন আমি এফ 5 টি চাপার আগে সেগুলি আমার ব্রাউজারে প্রতিফলিত হয় না (হট রিলোডলোড কাজ করে না)।

নীচে কিছু বিশদ:

package.json

  "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",

বিল্ড / webpack.dev.conf.js

  devServer: {
    clientLogLevel: 'warning',
    ...
    hot: true,
    ...
    watchOptions: {
      //poll: config.dev.poll,
      //aggregateTimeout: 500, // delay before reloading
      poll: 100 // enable polling since fsevents are not supported in docker

    }

ওয়াচঅপশনগুলি সংশোধন করার চেষ্টা করা হয়েছে তবে এর কোনও প্রভাব নেই।

সম্পাদনা করুন:

নীচের উত্তরের উপর ভিত্তি করে আমি পাশ করার চেষ্টা করেছি: CHOKIDAR_USEPOLLING=trueপরিবেশের পরিবর্তনশীল হিসাবে ডকার রান:

docker run -it -p 8081:8080 -e "HOST=0.0.0.0" -e "CHOKIDAR_USEPOLLING=true" -v ${PWD}:/app/ -v /app/node_modules --name my-frontend my-frontend-image

তবে এটি কার্যকর হয়নি - এখনও আমার পরিবর্তনগুলি পুনরায় লোড করতে সক্ষম নয় able প্রদত্ত লিঙ্কে এটিও বলে:

আপডেট / স্পষ্টকরণ: এই সমস্যাটি তখনই ঘটে যখন কোনও ভিএম এর ভিতরে আপনার ডকার ইঞ্জিনটি চালানো হয়। আপনি যদি ডকার এবং কোডিং উভয়ের জন্য লিনাক্সে থাকেন তবে আপনার এই সমস্যা নেই।

সুতরাং উত্তরটি আমার সেটআপের জন্য প্রযোজ্য বলে মনে করবেন না - আমি আমার মেশিনে উবুন্টু লিনাক্স চালাচ্ছি যেখানে আমি ডকার ইনস্টল করেছি। সুতরাং কোনও ভিএম সেটআপ নেই।

আরেকটি আপডেট - পোর্ট ম্যাপিং পরিবর্তনের উপর নীচের মন্তব্যের ভিত্তিতে:

  # Hot reload works!
  docker run -it -p 8080:8080 -e "HOST=0.0.0.0" -v ${PWD}:/app/ -v /app/node_modules --name my-frontend my-frontend-image

  # Hot reload fails!  
  #docker run -it -p 8081:8080 -e "HOST=0.0.0.0" -v ${PWD}:/app/ -v /app/node_modules --name my-frontend my-frontend-image

সুতরাং আমি যদি গরম পুনরায় লোডের 8080:8080পরিবর্তে মানচিত্রটি বন্দর করি 8081:8080! লক্ষ্য করুন যে অ্যাপ্লিকেশনটি উভয় ক্ষেত্রেই আসে যখন আমি localhostপূর্ববর্তী পোর্টগুলিতে আমার হোস্ট ব্রাউজারে এটি ব্যবহার করি । এটি কেবলমাত্র হট লোড কেবল তখনই কাজ করে যখন আমি আমার হোস্টে 8080 এ অ্যাপ্লিকেশনটি ম্যাপ করি।

কিন্তু কেন??

এখন যদি আমি করি:

PORT='8081'
docker run -it -p "${PORT}:${PORT}" -e "HOST=0.0.0.0" -e "PORT=${PORT}" -v ${PWD}:/app/ -v /app/node_modules --name my-frontend my-frontend-image

হট রিলোডলোড অবশ্যই কাজ করে। তবে এখনও নিশ্চিত নয় কেন আমি অভ্যন্তরীণ পাত্রে পোর্টটি 8080 থেকে 8081 পর্যন্ত হোস্টে ম্যাপ করতে পারি না।

BTW; আমি vue-cli-service serveপরিবর্তে ব্যবহার করলে সমস্যাটি আমি মোটেও দেখতে পাচ্ছি না - সমস্ত কিছু বাক্স থেকে বেরিয়ে আসে


এটি কি ভিএম এর অধীনে কাজ করছে?
গৌরবসা

বর্ণিত হিসাবে আপনি কী বোঝাতে চাইছেন অ্যাপটি কোনও ডকারের ধারকের ভিতরে চলছে।
u123

আপনার পোর্ট সংজ্ঞাটি এতে পরিবর্তন করতে পারে-p 8080:8080 -p 8081:8081
জর্জ

তিনি 'ডকার রান -it -p 8080: 8080 -e "HOST = 0.0.0.0" -v $ {PWD}: / অ্যাপ / -ভি / অ্যাপ্লিকেশন / নোড_মডিউলগুলি উল্লেখ করছেন - আমার-ফ্রন্টএন্ড আমার-সম্মুখভাগ-চিত্রের নামকরণ করুন ! সুতরাং অ্যাপল্যান্টলি অ্যাপ্লিকেশনটির হট লোডের কাজ করার জন্য 8080 এ ম্যাপ করা দরকার। কিন্তু কেন??
u123

উত্তর:


2

আমি মোটেও ভ্যুজেএস ব্যবহারকারী নই, এটির সাথে কখনও কাজ করিনি, তবে আমি আমার বিকাশের কর্মপ্রবাহের জন্য ডকারকে প্রচুরভাবে ব্যবহার করি এবং অতীতেও আমি একই ধরণের সমস্যা পেয়েছি।

আমার ক্ষেত্রে জাভাস্ক্রিপ্ট যা ব্রাউজারে প্রেরণ করা হয়েছিল তা ডকার কনটেইনার অভ্যন্তরীণ বন্দরের সাথে সংযোগ স্থাপনের চেষ্টা করছিল 8080, তবে হোস্টের জন্য ম্যাপযুক্ত একবারটি 8081হয়ে গেলে ব্রাউজারের জেএস 8080ডকারের ধারকের ভিতরে পৌঁছতে সক্ষম হয় নি therefore গরম পুনরায় লোড কাজ করছে না।

সুতরাং আমার কাছে আপনার মতো অবস্থাও আমার কাছে মনে হচ্ছে, সুতরাং আপনি হোস্টে যে একই বন্দরটি ব্যবহার করতে চান সেই একই বন্দরে শুনতে আপনার পুনরায় লোড আপনার ভ্যুজেএস অ্যাপে কনফিগার করতে হবে, বা কেবল আপনার উভয়ের জন্য একই পোর্টটি ব্যবহার করতে হবে ইতিমধ্যে সিদ্ধান্ত নিয়েছে যে এটি কাজ করে।


হ্যাঁ মনে হচ্ছে। যদিও একটি ব্যাখ্যার সাথে আকর্ষণীয় হতে পারে - যেহেতু এখন থেকে আমার বর্ণিত হিসাবে আমার কাজের প্রয়োগটি মনে রাখা দরকার। আমি বর্ণিত হিসাবে এটি বাক্সটির বাইরে কাজ করে যদি আমি পরিবর্তে 'ভ্যু-ক্লিপ-পরিষেবা পরিবেশন' ব্যবহার করি তবে অবশ্যই এমন কিছু হওয়া উচিত যা কাঁচা 'ওয়েবপ্যাক-ডেভ-সার্ভার' এ বিভক্ত।
u123

'ওয়েবপ্যাক-ডেভ-সার্ভার' তে কোনও কিছুই ভাঙা হয়নি, আপনাকে কেবল ডকার কীভাবে কাজ করে তা বুঝতে হবে। ডকার লাইভ পুনঃলোডের জন্য একটি কালো বক্সের মতো। সবার জন্য এটি লোকালহোস্টের সাথে কথা বলার জন্য গুরুত্বপূর্ণ, ডকার নয়।
Exadra37

-1

যদি ওয়াচঅপশনগুলি কাজ না করে, আপনি অন্য বিকল্পটি ব্যবহার করে দেখতে পারেন:

 environment:

  - CHOKIDAR_USEPOLLING=true

এখানে ডক্স অনুসারে:

“যদি দেখা আপনার পক্ষে কাজ না করে তবে এই বিকল্পটি ব্যবহার করে দেখুন। ভার্চুয়ালবক্সে এনএফএস এবং মেশিনগুলির সাথে দেখা কাজ করে না ”

রেফারেন্স:

https://daten-und-bass.io/blog/enabling-hot-reloading-with-vuejs-and-vue-cli-in-docker/


আপনি কী প্রস্তাব করবেন তা নির্দিষ্ট করার বিষয়ে নিশ্চিত নন তবে আমি যেমন বুঝতে পারি এটি পরিবেশের পরিবর্তনশীল হিসাবে সেট করা দরকার। আমি যদি এটি ডকার চালানোর জন্য করি তবে এর কোনও প্রভাব নেই। আমার আপডেট হওয়া পোস্টটি দেখুন। এছাড়াও আপনি যে লিঙ্কটি সরবরাহ করেছেন তাতে এটি বলছে যে কোনও ভিএম-তে চলার সময় এটি কেবলমাত্র প্রাসঙ্গিক।
u123
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.