Я виявив деякі цікаві дивацтва при спробі встановити образ докера на вікна.
Я створив .sh
сценарій, який виконує монтування папки проекту для запуску нашого образу середовища розробника. Я хочу один сценарій, який може запускати кожен розробник, незалежно від його машини. Все, що він робить, це запускає docker із поточною папкою проекту.
#!/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.
Ват. Що ;C
і звідки воно взялося?
Тож я роблю те, echo $PWD
що дає мені /d/my/project/folder
.
Цікаво, тому $PWD
вирішує правильний шлях у форматі Linux path, і, схоже, докер намагається перевести з нього на правильний шлях до Windows, за винятком того, що це ;C
з’являється з нізвідки. І \
це /
...
Що саме тут відбувається?
Я отримую той самий результат у терміналі git bash і PowerShell VSCode.
Оновлення: Я помітив, що запуск .sh
у терміналі PowerShell VSCode відкриває окреме cmd.exe
вікно консолі, яке, схоже, запускає сценарій у git bash. Отже, це може бути проблемою git bash.
"/${PWD}"