जब खिड़कियों पर एक डॉक छवि को माउंट करने की कोशिश कर रहा हूं तो मुझे कुछ दिलचस्प अजीबता मिली है।
मैंने एक .shस्क्रिप्ट बनाई जो हमारी डेवलपर पर्यावरण छवि को चलाने के लिए प्रोजेक्ट फ़ोल्डर का एक माउंट करता है। मुझे एक स्क्रिप्ट चाहिए, जो हर देवता अपनी मशीन की परवाह किए बिना चला सकता है। यह सब वर्तमान परियोजना फ़ोल्डर के साथ रन करने वाला है।
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
ठीक चलता है। अब योजना इस स्क्रिप्ट को कॉल करने की है npm, इसलिए मैं वर्तमान फ़ोल्डर के सापेक्ष काम करना चाहूंगा। चलिए एक और संस्करण की कोशिश करते हैं।
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
के साथ विफल:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from
daemon: Mount denied:
The source path "D:/my/project/folder;C"
doesn't exist and is not known to Docker.
वाट। क्या ;Cऔर कहाँ से आया है?
इसलिए मैं वह echo $PWDकरता हूं जो मुझे देता है /d/my/project/folder।
दिलचस्प है, इसलिए $PWDलिनक्स पथ प्रारूप में सही पथ पर हल होता है, और ऐसा लगता है जैसे docker उस सही windows पथ में अनुवाद करने की कोशिश कर रहा है, सिवाय इसके ;Cकि यह कहीं से भी बाहर दिखाई देता है। और \हैं /...
यहाँ वास्तव में क्या हो रहा है?
मुझे VSCode के टर्मिनल गिट बैश और पावरशेल में समान परिणाम मिलता है।
अद्यतन: मैंने देखा कि .shVSCode के पॉवरशेल टर्मिनल में चल रहा है , एक अलग cmd.exeकंसोल विंडो खोलता है जो स्क्रिप्ट को git bash में चलाने के लिए लगता है। तो यह git bash मुद्दा हो सकता है।
"/${PWD}"