Eu encontrei algumas estranhezas interessantes ao tentar montar uma imagem docker no Windows.
Eu criei um .sh
script 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 é ;C
e de onde veio?
Então eu faço o echo $PWD
que me dá /d/my/project/folder
.
Interessante, então $PWD
resolve 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 ;C
que 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 .sh
terminal do VSCode no PowerShell abre uma cmd.exe
janela de console separada que parece rodar o script no git bash. Portanto, este pode ser um problema do git bash.
"/${PWD}"