Tôi đã tìm thấy một số điều kỳ lạ thú vị khi cố gắng gắn một hình ảnh docker trên cửa sổ.
Tôi đã tạo một .sh
tập lệnh gắn thư mục dự án để chạy hình ảnh môi trường dành cho nhà phát triển của chúng tôi. Tôi muốn một tập lệnh mà mọi nhà phát triển đều có thể chạy, bất kể máy của họ là gì. Tất cả những gì nó làm là chạy docker với thư mục dự án hiện tại.
#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev
Chạy ổn. Bây giờ kế hoạch là gọi tập lệnh này từ npm
, vì vậy tôi muốn nó hoạt động liên quan đến thư mục hiện tại. Hãy thử phiên bản khác.
docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev
Không thành công với:
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. Nó là gì ;C
và nó đến từ đâu?
Vì vậy, tôi làm điều echo $PWD
đó mang lại cho tôi /d/my/project/folder
.
Thật thú vị, vì vậy $PWD
giải quyết đến đường dẫn chính xác ở định dạng đường dẫn linux và có vẻ như docker đang cố gắng dịch từ đường dẫn đó sang đường dẫn cửa sổ chính xác, ngoại trừ có điều này ;C
xuất hiện từ hư không. Và \
là /
...
Chính xác thì chuyện gì đang xảy ra ở đây vậy?
Tôi nhận được kết quả tương tự trong git bash và powershell của VSCode.
Cập nhật: Tôi nhận thấy rằng chạy .sh
trong thiết bị đầu cuối powershell của VSCode, sẽ mở ra một cmd.exe
cửa sổ bảng điều khiển riêng biệt có vẻ như chạy tập lệnh trong git bash. Vì vậy, đây có thể là một vấn đề git bash.
"/${PWD}"