Pencerelere bir docker imajı monte etmeye çalışırken bazı ilginç tuhaflıklar buldum.
.shGeliş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 ;Cve nereden geldi?
Ben de bunu echo $PWDbana verir /d/my/project/folder.
İlginç, bu yüzden $PWDlinux 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 ;Chiç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: .shVSCode'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}"