我的makefile
在proj
根目录下。
文件夹proj
是主文件夹,并且在其下有包含docker文件的文件夹,例如ws-led
或tools-ext
等。另外,Makefile
位于根目录下,需要运行所有命令。
这是文件夹结构
proj
- ws-led
— Dockerfile
- tools-ext
— Dockerfile
- Makefile
我需要将cd
移至腐烂下的每个文件夹(我们还有更多文件夹,然后运行:
docker build <folder name> .
示例:(就像手动运行以下命令一样)
cd ws-led
docker build -t ws-led .
cd tools-ext
docker build -t tools-ext .
我尝试以下操作(也许不是在我的Makefile的同一级别上的所有文件夹上都运行repo参数)
像(CURDIR)…
all: pre docker-build
.PHONY: pre docker-build
repos := ws-led tools-ext
pre:
$(patsubst %,docker-build,$(repos))
docker-build:pre
cd $*; docker build -t $* . >&2 | tee docker-build
使用此即时消息时出现错误:
invalid argument "." for "-t, --tag" flag: invalid reference format
任何主意,这是怎么了?还是我可以做得更好?
由于我有很多存储库/文件夹,我想使用make
来处理它
有多种方法可以实现。
您可以在循环中使用bash:
docker-build:
for dir in $(repos); do cd $$dir; docker build -t $$dir . >&2 | tee docker-build; done