【问题标题】:docker with makefile volume mounts带有 makefile 卷挂载的 docker
【发布时间】:2021-03-24 17:27:19
【问题描述】:

所以最近遇到了一个奇怪的案例,我试图将本地目录中的文件访问到我的容器中。 当我在终端上运行以下命令时,它运行良好并显示预期的文件列表

docker run -it --rm -v $(pwd):/mnt/data -w /mnt/data-sink artprod.dev.abc.com/org/cli ls

但是当我尝试通过 makefile 运行它时,它什么也没显示,(我在上一步中运行 docker cmd 的同一路径中运行 make)

docker-publish: build
    echo "Publishing $(APP_NAME) snapshot $(VERSION)"
    docker run -it --rm -v $(pwd):/mnt/data -w /mnt/data-sink artprod.dev.abc.com/org/cli ls

【问题讨论】:

  • “什么都不显示”是什么意思? make 是否显示它正在运行的命令?请显示你输入的命令和你得到的输出,剪切和粘贴格式(不是屏幕截图等)
  • @sanchith 是的,我之前看到过。我的 make 文件是制表符缩进的。我也没有任何错误。事实上,我没有得到任何错误。 ls 在使用 make 运行和在终端上单独运行时会打印不同的结果。当我说不同的结果时,我的意思是一个 make 没有列出任何文件,所以结果为空,一个直接在终端上运行返回文件列表
  • $(pwd) 在 Makefile 中扩展 Make 变量 pwd;它不做外壳插值。考虑 $$(pwd) 转义美元符号,以便将其传递给 shell。
  • 感谢@DavidMaze 的提示,这确实是问题所在.... $$(pwd) 没有发挥作用,但 $(shell pwd) 起作用了。谢谢

标签: docker makefile


【解决方案1】:

$(shell pwd) 在 make 中只是简单地工作 $(pwd) 没有做 shell 插值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2016-05-07
    • 1970-01-01
    • 2020-06-05
    • 2020-01-20
    • 2016-02-29
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多