Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
makefile无法使用-w-v-u选项运行docker映像_Docker_Makefile_Workdir - Fatal编程技术网

makefile无法使用-w-v-u选项运行docker映像

makefile无法使用-w-v-u选项运行docker映像,docker,makefile,workdir,Docker,Makefile,Workdir,我有工作docker映像,我可以通过命令在本地运行 docker运行--rm-u$(id-u)-v${PWD}:${PWD}-w${PWD}protocbuilder:1.0[其他不重要的参数] 一切正常。我希望使用makefile来使用该容器自动化操作,因此我创建了make命令: test: docker run --rm -u $(id -u) -v${PWD}:${PWD} -w${PWD} protocbuilder:1.0 [other unimportant args] 但

我有工作docker映像,我可以通过命令在本地运行

docker运行--rm-u$(id-u)-v${PWD}:${PWD}-w${PWD}protocbuilder:1.0[其他不重要的参数]

一切正常。我希望使用makefile来使用该容器自动化操作,因此我创建了make命令:

test:
    docker run --rm -u $(id -u) -v${PWD}:${PWD} -w${PWD} protocbuilder:1.0 [other unimportant args]
但是当我调用
maketest
时,我得到以下输出:

docker run --rm -u  -v/Users/mikolaj/GolandProjects/project:/Users/mikolaj/GolandProjects/project -w/Users/mikolaj/GolandProjects/project protocbuilder:1.0 [other unimportant args]
docker: Error response from daemon: unable to find user -v/Users/mikolaj/GolandProjects/project: no matching entries in passwd file.
make: *** [test] Error 125
我不太喜欢makefile,所以我不明白为什么makefile在控制台的
docker run
的标准调用中失败了,一切正常。使用
-u
-v
-w
参数将用户映射到容器中似乎存在问题。我是否应该在makefile中执行一些额外的步骤以使其正确工作?或者我需要在makefile中的
docker run
命令中更改一些内容

提前感谢

$(…)
是(GNU)make函数语法。如果需要在shell命令中包含一个文本
$
,以进行类似命令替换的操作,则需要将
$

测试:
docker运行--rm-u$$(id-u)。。。
#                  ^^
您还可以使用backtick语法来避免这个转义问题

测试:
docker运行--rm-u`id-u`。。。

类似地,
${PWD}
在命令在shell中运行之前通过make进行了扩展,但这可能没有什么显著区别。

谢谢,这解决了一个问题!我原以为这个问题要复杂得多,真是个惊喜:)编写makefile配方的简单规则是(1)在shell提示符下工作,(2)将其粘贴到make规则配方中,(3)将shell命令中的所有
$
替换为
$
,(4)利润!