Pencerelere bir docker imajı monte etmeye çalışırken bazı ilginç tuhaflıklar buldum.
.sh
Geliştirici ortamı imajımızı çalıştırmak için proje klasörünü bağlayan bir betik oluşturdum . Makinelerine bakılmaksızın her geliştiricinin çalıştırabileceği bir komut dosyası istiyorum. Tek yaptığı, mevcut proje klasörüyle docker çalıştırmaktır.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
İyi çalışıyor. Şimdi plan bu betiği aramaktır npm
, bu yüzden bunun mevcut klasöre göre çalışmasını istiyorum. Başka bir versiyonu deneyelim.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
Şununla başarısız olur:
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.
Wat. Nereden ;C
ve nereden geldi?
Ben de bunu echo $PWD
bana verir /d/my/project/folder
.
İlginç, bu yüzden $PWD
linux yolu biçiminde doğru yolu çözüyor ve docker bundan doğru pencere yoluna çevirmeye çalışıyor gibi görünüyor, ancak bu ;C
hiçbir yerde görünmüyor. Ve \
bunlar /
...
Burada tam olarak ne oluyor?
VSCode'un uç bash ve powershell'de aynı sonucu alıyorum.
Güncelleme: .sh
VSCode'un powershell terminalinde cmd.exe
çalıştırmanın, komut dosyasını git bash'da çalıştıran ayrı bir konsol penceresi açtığını fark ettim . Yani bu bir git bash sorunu olabilir.
"/${PWD}"