docker - 使用这个 Makefile 变量我做错了什么?
问题描述
我有一个 Makefile 用于构建和标记 docker 映像。我想用从文件(“pyproject.toml”)中提取的名称和版本信息来标记构建的图像。我的提取机制非常简单,在命令行上手动运行时可以工作:
$ grep -e "^name\s*=\s*" pyproject.toml | cut -d = -f 2 | xargs
audio_program_generator
$ grep -e "^version\s*=\s*" pyproject.toml | cut -d = -f 2 | xargs
1.7.1.0
但是,当我尝试在 Makefile 中使用变量时,它们会扩展为空。
我的 pyproject.toml 文件如下所示:
[tool.poetry]
name = "audio_program_generator"
version = "1.7.1.0"
Makefile 的相关部分:
NAME:=$(grep -e "^name\s*=\s*" pyproject.toml | cut -d = -f 2 | xargs)
VERSION:=$(grep -e "^version\s*=\s*" pyproject.toml | cut -d = -f 2 | xargs)
build-apg:
docker build --target apg --tag $(NAME):$(VERSION) .
预期产出
$ make build-apg
docker build --target apg --tag audio_program_generator:1.7.1.0 .
实际输出:
$ make build-apg
docker build --target apg --tag : .
invalid argument ":" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
make: *** [build-apg] Error 125
我究竟做错了什么?
解决方案
推荐阅读
- swift - 无法获取 QR 码的正确坐标,ARKit - Swift
- postgresql - 如何在数据库中存储点(x,y)?
- android - 使用 Hilt 将存储库注入 Android 中的服务
- python - 使用 Python 进行网页抓取:requests.get(param) 不会更新,尽管参数更新
- javascript - 如何在 grunt-cli 中提供外部端口,以便在服务器上托管它?
- excel - 检索不适用于新文件的 XML 节点
- java - 如何在 JLabel 中创建垂直文本?
- c# - XAML 框架从未为表单行为调用 OnDetachingForm
- java - 将 double 格式化为函数参数
- perl - 在 Perl 脚本中挂起正在运行的 shell 命令