【发布时间】:2025-11-28 20:50:02
【问题描述】:
我正在为 Windows 运行 make。 (choco install make)
在我尝试构建一个 docker 容器,特别是部署在 Amazon ECS 上之前,几乎一切都运行良好......
ECS 部署过程的一部分是您从 AWS 获取登录信息
aws ecr get-login
这将返回一个包含命令的字符串,看起来像
docker login -u AWS -p AQEC...HGZSSUMX4ftIpo8gY2 -e none https://123456789.dkr.ecr.us-east-1.amazonaws.com
如果我只是从 shell 运行它,我会复制输出并将其传递到命令行并运行 - 但我试图将它放入我的 makefile 中,所以我有
@ECS_LOGIN =$(shell aws ecr get-login)
然后我尝试在下一行执行它
$(ECS_LOGIN)
这就是我得到的地方process_begin: CreateProcess(NULL, ECS_LOGIN =docker login -u AWS -p AQEC...HGZSSUMX4ftIpo8gY2 -e none https://123456789.dkr.ecr.us-east-1.amazonaws.com, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [docker-deploy] Error 2
从研究其他问题来看,这似乎是从 Windows 运行时的路径问题 Makefile error make (e=2): The system cannot find the file specified
但是在我的aws ecr get-login 之前的 docker 命令可以正常工作
即docker build
所以它似乎特定于从变量中运行命令
那么我如何从 make 运行此命令并解析路径?
完整配方docker-deploy: docker-build
@ECS_LOGIN =$(shell aws ecr get-login)
$(ECS_LOGIN)
docker tag mytag:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/mytag:latest
docker push 123456789.dkr.ecr.us-east-1.amazonaws.com/mytag:latest
【问题讨论】: