Я обнаружил некоторые интересные странности, пытаясь смонтировать образ докера в 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}"