@@ -5,6 +5,9 @@ ifneq (,$(wildcard ./.build.env))
55 export
66endif
77
8+ LIB = ./Dockerfiles
9+ DOCKERFILE =Dockerfile.in
10+
811GIT_HASH ?= $(shell git log --format="% h" -n 1)
912BUILD_DATE ?= $(shell date -u +'% Y-% m-% dT% H:% M:% SZ')
1013
@@ -14,11 +17,14 @@ ELASTICMS_WEB_VERSION ?= 5.0.0
1417# Default Docker image name (if no .build.env file provided)
1518DOCKER_IMAGE_NAME ?= docker.io/elasticms/website-skeleton
1619
20+ CONTAINER_ENGINE ?= docker
21+ CONTAINER_TARGET_IMAGE_FORMAT ?= docker
22+
1723_BUILD_ARGS_TARGET ?= prd
1824_BUILD_ARGS_TAG ?= latest
1925
2026.DEFAULT_GOAL := help
21- .PHONY : help build build-dev build-all test test-dev test-all
27+ .PHONY : help build build-dev build-all test test-dev test-all Dockerfile
2228
2329help : # Show help for each of the Makefile recipes.
2430 @grep -E ' ^[a-zA-Z0-9 -]+:.*#' Makefile | sort | while read -r l; do printf " \033[1;32m$$ (echo $$ l | cut -f 1 -d':')\033[00m:$$ (echo $$ l | cut -f 2- -d'#')\n" ; done
@@ -38,14 +44,27 @@ _build-%:
3844 -e _BUILD_ARGS_TAG=" ${ELASTICMS_WEB_VERSION} -$* " \
3945 -e _BUILD_ARGS_TARGET=" $* "
4046
41- _builder :
42- @docker build \
43- --build-arg VERSION_ARG=" ${ELASTICMS_WEB_VERSION} " \
44- --build-arg RELEASE_ARG=" ${_BUILD_ARGS_TAG} " \
45- --build-arg BUILD_DATE_ARG=" ${BUILD_DATE} " \
46- --build-arg VCS_REF_ARG=" ${GIT_HASH} " \
47- --target ${_BUILD_ARGS_TARGET} \
48- --tag ${DOCKER_IMAGE_NAME} :${_BUILD_ARGS_TAG} .
47+ _builder : _dockerfile
48+ ifeq ($(CONTAINER_ENGINE),podman)
49+ @echo "Building $(CONTAINER_TARGET_IMAGE_FORMAT) image format with buildah"
50+ @buildah bud --no-cache --pull-always --force-rm --squash \
51+ --build-arg VERSION_ARG="${ELASTICMS_WEB_VERSION}" \
52+ --build-arg RELEASE_ARG="${_BUILD_ARGS_TAG}" \
53+ --build-arg BUILD_DATE_ARG="${BUILD_DATE}" \
54+ --build-arg VCS_REF_ARG="${GIT_HASH}" \
55+ --format ${CONTAINER_TARGET_IMAGE_FORMAT} \
56+ --target ${_BUILD_ARGS_TARGET} \
57+ --tag ${DOCKER_IMAGE_NAME}:${_BUILD_ARGS_TAG} .
58+ else
59+ @echo "Building $(CONTAINER_TARGET_IMAGE_FORMAT) image format with docker"
60+ @docker build --no-cache --force-rm --progress=plain \
61+ --build-arg VERSION_ARG="${ELASTICMS_WEB_VERSION}" \
62+ --build-arg RELEASE_ARG="${_BUILD_ARGS_TAG}" \
63+ --build-arg BUILD_DATE_ARG="${BUILD_DATE}" \
64+ --build-arg VCS_REF_ARG="${GIT_HASH}" \
65+ --target ${_BUILD_ARGS_TARGET} \
66+ --tag ${DOCKER_IMAGE_NAME}:${_BUILD_ARGS_TAG} .
67+ endif
4968
5069test : # Test [elasticms-website-skeleton] [prd] variant Docker images
5170 @$(MAKE ) -s _tester-prd
@@ -58,9 +77,17 @@ test-all: # Test [elasticms-website-skeleton] [prd,dev] variant Docker images
5877 @$(MAKE ) -s _tester-dev
5978
6079_tester-% :
80+ @echo " Test image with $( CONTAINER_ENGINE) container engine"
6181 @$(MAKE ) -s _tester \
6282 -e DOCKER_IMAGE_NAME=" ${DOCKER_IMAGE_NAME} :${ELASTICMS_WEB_VERSION} -$* " \
63- -e EMS_VERSION=" ${ELASTICMS_WEB_VERSION} "
83+ -e EMS_VERSION=" ${ELASTICMS_WEB_VERSION} " \
84+ -e CONTAINER_ENGINE=" ${CONTAINER_ENGINE} "
6485
6586_tester :
66- @bats test/tests.bats
87+ @bats test/tests.bats
88+
89+ Dockerfile : # generate Dockerfile
90+ @$(MAKE ) -s _dockerfile
91+
92+ _dockerfile : $(LIB ) /* .m4
93+ sed -e ' s/# include(\(.*\))/include(\1)/g' $(LIB ) /$(DOCKERFILE ) | m4 -I $(LIB ) > $(DOCKERFILE:.in= )
0 commit comments