我的 Makefile 中有一个简单的 if 条件,用于基于平台构建 Docker 映像(如果在 arm64 上使用 docker buildx),但它没有评估,我很困惑为什么它不是。 有什么建议吗?谢谢!
...
OS_ARCH := $(shell /usr/bin/arch)
build:
@echo "Building for ${OS_ARCH}"
ifeq ($(OS_ARCH),"arm64")
@echo "Building for ARM64"
@docker buildx build -t $(NAMESPACE)/$(IMAGE_NAME):$(VERSION) --platform $(PLATFORM) -f ./$(DOCKERFILE) --no-cache=$(NO_CACHE) --label "git-revison=$(git rev-parse HEAD)" --label "version=$(VERSION)" .
else
@echo "Building for x86_64"
@docker build -t $(NAMESPACE)/$(IMAGE_NAME):$(VERSION) -f ./$(DOCKERFILE) --no-cache=$(NO_CACHE) --label "git-revison=$(git rev-parse HEAD)" --label "version=$(VERSION)" .
endif
@echo 'Done building.'
@docker images --format '{{.Repository}}:{{.Tag}}tt Built: {{.CreatedSince}}ttSize: {{.Size}}' | grep $(IMAGE_NAME):$(VERSION)
@echo "Finished building $(IMAGE_NAME):$(VERSION)"
你有:
ifeq ($(OS_ARCH),"arm64")
如果OS_ARCH
设置为arm64
则计算结果为:
ifeq (arm64,"arm64")
字符串arm64
与字符串"arm64"
不同,因为后者有引号,而前者没有。
用:
ifeq ($(OS_ARCH),arm64)