Я запускаю make для окон. (choco install make
)Запуск команды из переменной в 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
, если я просто работаю это из оболочки я бы скопировать выход и мимо него на командную строку и запустить - но я пытаюсь поместите это в мой 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
от исследования других вопросов, это кажется как вопрос Pathing при запуске из окон Makefile error make (e=2): The system cannot find the file specified
но команды докер до моего aws ecr get-login
работы просто отлично т.е.
docker build
так что кажется, специфичен для запуска команды из переменных
Так как я запустить эту команду из замыкающих и есть путь решительность?
полный рецепт
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
спасибо - положив переменную, установленную вне рецепта, казалось, сделал трюк –