在 Windows 機器上,我有一個Makefile包含以下指令的指令:
start_docker:
docker run --rm -p 8888:8888 -it -v "${PWD}":/home/docker/app my_image
當我make start_docker在 PowerShell 或 cmd 提示符下運行時,我得到以下輸出:
docker run -p 8888:8888 -it -v :/home/docker/app my_image
(注意輸出顯示的是空白而不是當前路徑)
然后我的本地卷沒有掛載。但是,如果我直接粘貼docker run --rm -p 8888:8888 -it -v "${PWD}":/home/docker/app my_image,則安裝卷(太棒了!)。
"$(PWD)" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.如果我嘗試在 cmd 提示符下使用它,則會收到錯誤 訊息)。
我應該怎么做才能在 Windows 中使用正確的路徑啟動我的 docker 映像(它在 Linux 上運行順利)?
我也試過${PWD}and $(pwd),它并沒有改變問題。
uj5u.com熱心網友回復:
Make 不會PWD以任何方式設定或使用該變數。如果設定了它,要么是因為你的 makefile 中的某些東西設定了它,要么是因為它是從呼叫make.
如果您在 GNU/Linux 或 MacOS 等 POSIX 系統上運行,那么 shell 將(通常但不總是)設定PWD環境變數并make繼承它。但它并不總是正確的,也不總是固定的。在 Windows 上,Windows shell(powershell 或 cmd.exe)不設定此變數,因此永遠不會設定它。
簡而言之,使用PWD.
如果您愿意,可以切換到使用 GNU make 變數CURDIR:
start_docker:
docker run --rm -p 8888:8888 -it -v "${CURDIR}":/home/docker/app my_image
它是由 GNUmake在啟動時設定的,因此總是有一個值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/520678.html
