डॉकटर स्थापित के साथ उबंटू लिनक्स का उपयोग करना। कोई वी.एम.
मैं एक vuejs आवेदन के साथ एक docker छवि का निर्माण किया है। हॉट रीलोड को सक्षम करने के लिए मैं डॉकटर कंटेनर शुरू करता हूं:
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। लेकिन जब मैं स्रोत फ़ाइलों में परिवर्तन करता हूं और उन बदलावों को सहेजता हूं जो वे मेरे ब्राउज़र में प्रतिबिंबित नहीं होते हैं तो इससे पहले कि मैं F5 दबाता हूं (हॉट रीलोड काम नहीं करता है)।
नीचे कुछ विवरण:
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
लेकिन इसका असर नहीं हुआ - फिर भी मेरे बदलावों को गर्म करने में सक्षम नहीं। इसके अलावा दिए गए लिंक में यह कहता है:
अपडेट / क्लेरीफिकेशन: यह समस्या केवल तब होती है जब आपके डॉक इंजन को वीएम के अंदर चलाया जाता है। यदि आप डॉकर और कोडिंग दोनों के लिए लिनक्स पर हैं, तो आपको यह समस्या नहीं है।
ऐसा मत सोचो कि उत्तर मेरे सेटअप पर लागू होता है - मैं अपनी मशीन पर उबंटू लिनक्स चला रहा हूं जहां मैंने डॉकटर स्थापित किया है। तो कोई VM सेटअप।
एक और अपडेट - पोर्ट मैपिंग बदलने पर नीचे टिप्पणी के आधार पर:
# 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इसके बजाय उपयोग करता हूं - सब कुछ बॉक्स से बाहर काम करता है ।
-p 8080:8080 -p 8081:8081