Encontré algunas rarezas interesantes al intentar montar una imagen de Docker en Windows.
Creé un .shscript que monta la carpeta del proyecto para ejecutar nuestra imagen de entorno de desarrollador. Quiero un script que todos los desarrolladores puedan ejecutar, independientemente de su máquina. Todo lo que hace es ejecutar la ventana acoplable con la carpeta del proyecto actual.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
Funciona bien. Ahora el plan es llamar a este script desde npm, así que me gustaría que esto funcione en relación con la carpeta actual. Probemos otra versión.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
Falla con:
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. ¿Qué es ;Cy de dónde vino?
Entonces hago lo echo $PWDque me da /d/my/project/folder.
Interesante, así que se $PWDresuelve en la ruta correcta en formato de ruta de Linux, y parece que Docker está tratando de traducir de eso a la ruta de Windows correcta, excepto que hay esto ;Cque aparece de la nada. Y \son /...
Qué está pasando aquí?
Obtengo el mismo resultado en el terminal git bash y powershell de VSCode.
Actualización: noté que al ejecutar el .shterminal de PowerShell de VSCode, se abre una cmd.exeventana de consola separada que parece ejecutar el script en git bash. Entonces esto podría ser un problema de git bash.
"/${PWD}"