Я обнаружил некоторые интересные странности, пытаясь смонтировать образ докера в Windows.
Я создал .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.
Wat. Что ;Cи откуда взялось?
Так что я делаю то, echo $PWDчто дает мне /d/my/project/folder.
Интересно, поэтому $PWDразрешается правильный путь в формате пути Linux, и кажется, что докер пытается перевести с него на правильный путь Windows, за исключением того, что это ;Cпоявляется из ниоткуда. И \они /...
Что именно здесь происходит?
Я получаю тот же результат в терминале VSCode git bash и powershell.
Обновление: я заметил, что .shпри запуске в терминале PowerShell VSCode открывается отдельное cmd.exeокно консоли, которое, кажется, запускает скрипт в git bash. Так что это может быть проблема с git bash.
"/${PWD}"