Saya telah menemukan beberapa keanehan yang menarik ketika mencoba memasang gambar buruh pelabuhan di windows.
Saya membuat .shskrip yang melakukan mount folder proyek untuk menjalankan image lingkungan pengembang kami. Saya ingin satu skrip yang dapat dijalankan oleh setiap pengembang, apa pun mesinnya. Yang dilakukannya hanyalah menjalankan buruh pelabuhan dengan folder proyek saat ini.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
Bekerja dengan baik. Sekarang rencananya adalah untuk memanggil skrip ini dari npm, jadi saya ingin ini berfungsi relatif terhadap folder saat ini. Ayo coba versi lain.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
Gagal dengan:
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. Apa ;Cdan dari mana asalnya?
Jadi saya melakukan echo $PWDyang memberi saya /d/my/project/folder.
Menarik, jadi $PWDmemutuskan ke jalur yang benar dalam format jalur linux, dan sepertinya buruh pelabuhan mencoba menerjemahkan dari itu ke jalur jendela yang benar, kecuali ada ini ;Cyang muncul entah dari mana. Dan \yang /...
Apa sebenarnya yang terjadi disini?
Saya mendapatkan hasil yang sama di terminal git bash dan PowerShell VSCode.
Pembaruan: Saya perhatikan bahwa menjalankan .shterminal PowerShell di VSCode, membuka cmd.exejendela konsol terpisah yang tampaknya menjalankan skrip di git bash. Jadi ini mungkin masalah git bash.
"/${PWD}"