Przy próbie zamontowania obrazu Dockera w systemie Windows znalazłem kilka interesujących dziwactw.
Stworzyłem .shskrypt, który wykonuje montowanie folderu projektu, aby uruchomić nasz obraz środowiska deweloperskiego. Potrzebuję jednego skryptu, który może uruchomić każdy programista, niezależnie od komputera. Wszystko, co robi, to uruchamia docker z bieżącym folderem projektu.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
Działa dobrze. Teraz planujemy wywołać ten skrypt z npm, więc chciałbym, aby działał on względem bieżącego folderu. Wypróbujmy inną wersję.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
Zawodzi z:
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. Co ;Ci skąd się wzięło?
Więc robię, echo $PWDco mi daje /d/my/project/folder.
Interesujące, więc $PWDrozpoznaje poprawną ścieżkę w formacie ścieżki Linuksa i wygląda na to, że docker próbuje przetłumaczyć ją na właściwą ścieżkę okna, z wyjątkiem tego, ;Cże pojawia się znikąd. A \są /...
Co tu się właściwie dzieje?
Otrzymuję ten sam wynik w terminalowym git bash i PowerShell VSCode.
Aktualizacja: Zauważyłem, że uruchomienie .shterminalu PowerShell w VSCode otwiera osobne cmd.exeokno konsoli, które wydaje się uruchamiać skrypt w git bash. Więc może to być problem z git bash.
"/${PWD}"