我有一个已创建的Dockerfile,我想以本地目录作为共享卷来启动它。我已经标记了图像foo
。
运行时,我可以列出本地控制器中存在的目录test/
的内容:
docker run -it -v $(pwd)/.:/usr/local/src/spark foo /bin/bash -c "ls test"
# functions as expected, lists files in test/ directory
但是,当我将上述命令放入Makefile中时,不会得到相同的结果。相反,当我运行$ make foo
时,会发出以下消息:
docker run -it -v /.:/usr/local/src/spark foo /bin/bash -c "ls test"
ls: cannot access test: No such file or directory
在make foo
命令中共享本地目录时,就像直接在行中调用make
一样,关于如何使docker
像预期那样“看到”测试目录的任何建议吗? / p>
答案 0 :(得分:2)
如果您有制定规则
container-ls:
docker run -it -v $(pwd)/.:/usr/local/src/spark foo ls test
Make看到$(pwd)
并将其解释为Make变量或Make内部函数。您可以通过以下两种方法来解决此问题:
$$(pwd)
$(realpath .)