Eu encontrei algumas estranhezas interessantes ao tentar montar uma imagem docker no Windows.
Eu criei um .shscript que faz uma montagem da pasta do projeto para rodar nossa imagem de ambiente de desenvolvedor. Quero um script que todo desenvolvedor possa executar, independentemente de sua máquina. Tudo o que ele faz é executar o docker com a pasta do projeto atual.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
Funciona bem. Agora, o plano é chamar esse script de npm, então gostaria que funcionasse em relação à pasta atual. Vamos tentar outra versão.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
Falha com:
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. O que é ;Ce de onde veio?
Então eu faço o echo $PWDque me dá /d/my/project/folder.
Interessante, então $PWDresolve para o caminho correto no formato de caminho do Linux, e parece que o docker está tentando traduzir desse para o caminho correto do Windows, exceto que há isso ;Cque aparece do nada. E o \são /...
O que exatamente está acontecendo aqui?
Eu obtenho o mesmo resultado no terminal git bash e powershell do VSCode.
Atualização: notei que rodar o .shterminal do VSCode no PowerShell abre uma cmd.exejanela de console separada que parece rodar o script no git bash. Portanto, este pode ser um problema do git bash.
"/${PWD}"