@@ -5,7 +5,8 @@ DOCKER_LIB_DIR = $(LIB_DIR)/docker
55DOCKER_LIB_DIR_REL = $(shell echo $(DOCKER_LIB_DIR ) | sed "s;$(PROJECT_DIR ) ;;g")
66DOCKER_LIB_IMAGE_DIR = $(LIB_DIR ) /docker/image
77DOCKER_LIB_IMAGE_DIR_REL = $(shell echo $(DOCKER_LIB_IMAGE_DIR ) | sed "s;$(PROJECT_DIR ) ;;g")
8- DOCKER_NETWORK = $(PROJECT_GROUP_SHORT ) /$(PROJECT_NAME_SHORT ) /$(BUILD_ID )
8+ # DOCKER_NETWORK = $(PROJECT_GROUP_SHORT)/$(PROJECT_NAME_SHORT)/$(BUILD_ID)
9+ DOCKER_NETWORK = $(PROJECT_GROUP_SHORT ) _$(PROJECT_NAME_SHORT ) _$(BUILD_ID )
910DOCKER_REGISTRY = $(AWS_ECR ) /$(PROJECT_GROUP_SHORT ) /$(PROJECT_NAME_SHORT )
1011DOCKER_LIBRARY_REGISTRY = nhsd
1112
@@ -43,6 +44,10 @@ DOCKER_LIBRARY_TOOLS_VERSION = $(shell cat $(DOCKER_LIB_IMAGE_DIR)/tools/VERSION
4344COMPOSE_HTTP_TIMEOUT := $(or $(COMPOSE_HTTP_TIMEOUT ) , 6000)
4445DOCKER_CLIENT_TIMEOUT := $(or $(DOCKER_CLIENT_TIMEOUT ) , 6000)
4546
47+ DOCKER_CMD := $(or $(DOCKER_CMD ) , $(shell command -v docker >/dev/null 2>&1 && echo docker || echo podman) )
48+ IS_PODMAN := $(shell [[ "$(DOCKER_CMD ) " == * podman ]] && echo true || echo false)
49+ OUTPUT_OPTION := $(if $(filter false,$(IS_PODMAN ) ) ,--output type=docker)
50+
4651# ==============================================================================
4752
4853docker-create-from-template : # ## Create Docker image from template - mandatory: NAME,TEMPLATE=[library template image name]
@@ -65,7 +70,7 @@ docker-create-from-template: ### Create Docker image from template - mandatory:
6570# ==============================================================================
6671
6772docker-config : # ## Configure Docker networking
68- docker network create $(DOCKER_NETWORK ) 2> /dev/null || :
73+ $( DOCKER_CMD ) network create $(DOCKER_NETWORK ) 2> /dev/null || :
6974
7075docker-build docker-image : # ## Build Docker image - mandatory: NAME; optional: VERSION,FROM_CACHE=true,BUILD_OPTS=[build options],EXAMPLE=true
7176 reg=$$(make _docker-get-reg )
@@ -99,7 +104,7 @@ docker-build docker-image: ### Build Docker image - mandatory: NAME; optional: V
99104 export IMAGE=$$ reg/$(NAME )$(shell [ -n "$(EXAMPLE ) " ] && echo -example)
100105 export VERSION=$$(make docker-image-get-version )
101106 make -s file-replace-variables FILE=$$ dir/Dockerfile.effective
102- docker buildx build --rm \
107+ $( DOCKER_CMD ) buildx build --rm \
103108 --build-arg IMAGE=$$ IMAGE \
104109 --build-arg VERSION=$$ VERSION \
105110 --build-arg BUILD_ID=$(BUILD_ID ) \
@@ -108,7 +113,7 @@ docker-build docker-image: ### Build Docker image - mandatory: NAME; optional: V
108113 --build-arg BUILD_BRANCH=$(BUILD_BRANCH ) \
109114 --build-arg BUILD_COMMIT_HASH=$(BUILD_COMMIT_HASH ) \
110115 --build-arg BUILD_COMMIT_DATE=$(BUILD_COMMIT_DATE ) \
111- --output type=docker \
116+ $( OUTPUT_OPTION ) \
112117 --label name=$$ IMAGE \
113118 --label version=$$ VERSION \
114119 --label build-id=$(BUILD_ID ) \
@@ -122,12 +127,12 @@ docker-build docker-image: ### Build Docker image - mandatory: NAME; optional: V
122127 --tag $$ reg/$(NAME )$(shell [ -n "$(EXAMPLE ) " ] && echo -example) :$$(make docker-image-get-version ) \
123128 $$ dir
124129 # Tag
125- docker tag \
130+ $( DOCKER_CMD ) tag \
126131 $$ reg/$(NAME )$(shell [ -n "$(EXAMPLE ) " ] && echo -example) :$$(make docker-image-get-version ) \
127132 $$ reg/$(NAME )$(shell [ -n "$(EXAMPLE ) " ] && echo -example) :latest
128- docker rmi --force $$(docker images | grep "<none>" | awk '{ print $$3 }' ) 2> /dev/null || :
133+ $( DOCKER_CMD ) rmi --force $$($( DOCKER_CMD ) images | grep "<none>" | awk '{ print $$3 }') 2> /dev/null || :
129134 make docker-image-keep-latest-only NAME=$(NAME )
130- docker image inspect $$ reg/$(NAME )$(shell [ -n "$(EXAMPLE ) " ] && echo -example) :latest --format=' {{.Size}}'
135+ $( DOCKER_CMD ) image inspect $$ reg/$(NAME )$(shell [ -n "$(EXAMPLE ) " ] && echo -example) :latest --format=' {{.Size}}'
131136
132137docker-test : # ## Test image - mandatory: NAME; optional: ARGS,CMD,GOSS_OPTS,EXAMPLE=true
133138 dir=$$(make _docker-get-dir )
@@ -143,9 +148,9 @@ docker-test: ### Test image - mandatory: NAME; optional: ARGS,CMD,GOSS_OPTS,EXAM
143148
144149docker-login : # ## Log into the Docker registry - optional: DOCKER_USERNAME,DOCKER_PASSWORD
145150 if [ -n " $( DOCKER_USERNAME) " ] && [ -n " $$ (make _docker-get-login-password)" ]; then
146- make _docker-get-login-password | docker login --username " $( DOCKER_USERNAME) " --password-stdin
151+ make _docker-get-login-password | $( DOCKER_CMD ) login --username " $( DOCKER_USERNAME) " --password-stdin
147152 else
148- make aws-ecr-get-login-password | docker login --username AWS --password-stdin $(AWS_ECR )
153+ make aws-ecr-get-login-password | $( DOCKER_CMD ) login --username AWS --password-stdin $(AWS_ECR )
149154 fi
150155
151156docker-create-repository : # ## Create Docker repository to store an image - mandatory: NAME; optional: POLICY_FILE=[policy file]
@@ -155,11 +160,11 @@ docker-push: ### Push Docker image - mandatory: NAME; optional: VERSION|TAG
155160 make docker-login
156161 reg=$$(make _docker-get-reg )
157162 if [ -n " $( or $( VERSION) , $( TAG) ) " ]; then
158- docker push $$ reg/$(NAME ) :$(or $(VERSION ) , $(TAG ) )
163+ $( DOCKER_CMD ) push $$ reg/$(NAME ) :$(or $(VERSION ) , $(TAG ) )
159164 else
160- docker push $$ reg/$(NAME ) :$$(make docker-image-get-version )
165+ $( DOCKER_CMD ) push $$ reg/$(NAME ) :$$(make docker-image-get-version )
161166 fi
162- docker push $$ reg/$(NAME ) :latest 2> /dev/null || :
167+ $( DOCKER_CMD ) push $$ reg/$(NAME ) :latest 2> /dev/null || :
163168
164169docker-push-for-production : # ## Push Docker image - mandatory: NAME; optional: VERSION|TAG
165170 make docker-login
@@ -174,23 +179,23 @@ docker-pull: ### Pull Docker image - mandatory: NAME,DIGEST|VERSION|TAG
174179 [ $$ (make _docker-is-lib-image) == false ] && make docker-login
175180 reg=$$(make _docker-get-reg )
176181 if [ -n " $( DIGEST) " ]; then
177- docker pull $$ reg/$(NAME ) @$(DIGEST ) || :
182+ $( DOCKER_CMD ) pull $$ reg/$(NAME ) @$(DIGEST ) || :
178183 else
179- docker pull $$ reg/$(NAME ) :$(or $(VERSION ) , $(TAG ) ) || :
184+ $( DOCKER_CMD ) pull $$ reg/$(NAME ) :$(or $(VERSION ) , $(TAG ) ) || :
180185 fi
181186
182187docker-tag : # ## Tag latest or provide arguments - mandatory: NAME,VERSION|TAG|[SOURCE,TARGET]|[DIGEST,VERSION|TAG]
183188 reg=$$(make _docker-get-reg )
184189 if [ -n " $( DIGEST) " ] && [ -n " $( TAG) " ]; then
185- docker tag \
190+ $( DOCKER_CMD ) tag \
186191 $$ reg/$(NAME ) @$(DIGEST ) \
187192 $$ reg/$(NAME ) :$(or $(VERSION ) , $(TAG ) )
188193 elif [ -n " $( SOURCE) " ] && [ -n " $( TARGET) " ]; then
189- docker tag \
194+ $( DOCKER_CMD ) tag \
190195 $$ reg/$(NAME ) :$(SOURCE ) \
191196 $$ reg/$(NAME ) :$(TARGET )
192197 elif [ -n " $( or $( VERSION) , $( TAG) ) " ]; then
193- docker tag \
198+ $( DOCKER_CMD ) tag \
194199 $$ reg/$(NAME ) :latest \
195200 $$ reg/$(NAME ) :$(or $(VERSION ) , $(TAG ) )
196201 fi
@@ -280,25 +285,25 @@ docker-image-set-version: ### Set effective Docker image version - mandatory: NA
280285docker-image-pull-or-build : # ## Pull or build image - mandatory: NAME; optional VERSION|TAG=[defaults to 'latest'],LATEST=true
281286 version=$(or $(or $(VERSION ) , $(TAG ) ) , latest)
282287 image=$(DOCKER_LIBRARY_REGISTRY ) /$(NAME ) :$$ version
283- if [ -z " $$ (docker images --filter=reference=" $$ image" --quiet)" ]; then
288+ if [ -z " $$ ($( DOCKER_CMD ) images --filter=reference=" $$ image" --quiet)" ]; then
284289 make docker-pull NAME=$(NAME ) VERSION=$$ version || :
285290 fi
286- if [ -z " $$ (docker images --filter=reference=" $$ image" --quiet)" ]; then
291+ if [ -z " $$ ($( DOCKER_CMD ) images --filter=reference=" $$ image" --quiet)" ]; then
287292 make docker-build NAME=$(NAME ) || ( \
288293 echo " ERROR: No image $$ image found" ; \
289294 exit 1 \
290295 )
291296 fi
292- if [ -n " $$ (docker images --filter=reference=" $$ image" --quiet)" ]; then
297+ if [ -n " $$ ($( DOCKER_CMD ) images --filter=reference=" $$ image" --quiet)" ]; then
293298 [[ " $( LATEST) " =~ ^(true| yes| y| on| 1| TRUE| YES| Y| ON)$$ ]] && \
294299 make docker-tag NAME=$(NAME ) SOURCE=$$ version TARGET=latest || :
295300 fi
296301
297302docker-image-keep-latest-only : # ## Remove other images than latest - mandatory: NAME
298303 reg=$$(make _docker-get-reg )
299- docker rmi --force $$( \
300- docker images --filter=reference=" $$ reg/$( NAME) :*" --quiet | \
301- grep -v $$(docker images --filter=reference="$$reg/$(NAME ) :latest" --quiet ) \
304+ $( DOCKER_CMD ) rmi --force $$( \
305+ $( DOCKER_CMD ) images --filter=reference=" $$ reg/$( NAME) :*" --quiet | \
306+ grep -v $$($( DOCKER_CMD ) images --filter=reference="$$reg/$(NAME ) :latest" --quiet) \
302307 ) 2> /dev/null || :
303308
304309docker-image-start : # ## Start container - mandatory: NAME; optional: CMD,DIR,ARGS=[Docker args],VARS_FILE=[Makefile vars file],EXAMPLE=true
@@ -364,7 +369,7 @@ docker-run: ### Run specified image - mandatory: IMAGE; optional: CMD,SH=true,DI
364369 make docker-config > /dev/null 2>&1
365370 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo $$(echo '$(IMAGE ) ' | md5sum | cut -c1-7 ) -$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
366371 if [[ ! " $( SH) " =~ ^(true| yes| y| on| 1| TRUE| YES| Y| ON)$$ ]]; then
367- docker run --interactive $(_TTY ) --rm \
372+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
368373 --name $$ container \
369374 --user $$(id -u ) :$$(id -g ) \
370375 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -425,7 +430,7 @@ docker-run-editorconfig: ### Run editorconfig container - optional: DIR=[working
425430 make docker-config > /dev/null 2>&1
426431 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo mstruebing/editorconfig-checker:$(DOCKER_EDITORCONFIG_CHECKER_VERSION ) )
427432 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo editorconfig-$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
428- docker run --interactive $(_TTY ) --rm \
433+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
429434 --name $$ container \
430435 --user $$(id -u ) :$$(id -g ) \
431436 --volume $$([ -n "$(DIR ) " ] && echo $(abspath $(DIR ) ) || echo $(PWD ) ) :/check \
@@ -531,7 +536,7 @@ docker-run-python: ### Run python container - mandatory: CMD; optional: SH=true,
531536 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo python:$(DOCKER_PYTHON_VERSION ) )
532537 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo python-$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
533538 if [[ ! " $( SH) " =~ ^(true| yes| y| on| 1| TRUE| YES| Y| ON)$$ ]]; then
534- docker run --interactive $(_TTY ) --rm \
539+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
535540 --name $$ container \
536541 --user $$(id -u ) :$$(id -g ) \
537542 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -549,7 +554,7 @@ docker-run-python: ### Run python container - mandatory: CMD; optional: SH=true,
549554 $$ image \
550555 $(CMD )
551556 else
552- docker run --interactive $(_TTY ) --rm \
557+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
553558 --name $$ container \
554559 --user $$(id -u ) :$$(id -g ) \
555560 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -594,7 +599,7 @@ docker-run-terraform: ### Run terraform container - mandatory: CMD; optional: DI
594599 make docker-config > /dev/null 2>&1
595600 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo hashicorp/terraform:$(DOCKER_TERRAFORM_VERSION ) )
596601 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo terraform-$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
597- docker run --interactive $(_TTY ) --rm \
602+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
598603 --name $$ container \
599604 --user $$(id -u ) :$$(id -g ) \
600605 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -613,7 +618,7 @@ docker-run-terraform-tfsec: ### Run terraform tfsec container - optional: DIR,AR
613618 make docker-config > /dev/null 2>&1
614619 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo aquasec/tfsec:$(DOCKER_TERRAFORM_TFSEC_VERSION ) )
615620 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo tfsec-$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
616- docker run --interactive $(_TTY ) --rm \
621+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
617622 --name $$ container \
618623 --user $$(id -u ) :$$(id -g ) \
619624 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -632,7 +637,7 @@ docker-run-checkov: ### Run checkov container - optional: DIR,ARGS=[Docker args]
632637 make docker-config > /dev/null 2>&1
633638 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo bridgecrew/checkov:$(DOCKER_CHECKOV_VERSION ) )
634639 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo tfsec-$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
635- docker run --interactive $(_TTY ) --rm \
640+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
636641 --name $$ container \
637642 --user $$(id -u ) :$$(id -g ) \
638643 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -714,7 +719,7 @@ docker-run-tools: ### Run tools (Python) container - mandatory: CMD; optional: S
714719 container=$$([ -n "$(CONTAINER ) " ] && echo $(CONTAINER ) || echo tools-$(BUILD_COMMIT_HASH ) -$(BUILD_ID ) -$$(date --date=$$(date -u +"%Y-%m-%dT%H:%M:%S%z" ) -u +"%Y%m%d%H%M%S" 2> /dev/null ) -$$(make secret-random LENGTH=8 ) )
715720 make docker-image-pull-or-build NAME=tools VERSION=$(DOCKER_LIBRARY_TOOLS_VERSION ) >&2
716721 if [[ ! " $( SH) " =~ ^(true| yes| y| on| 1| TRUE| YES| Y| ON)$$ ]]; then
717- docker run --interactive $(_TTY ) --rm \
722+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
718723 --name $$ container \
719724 --user $$(id -u ) :$$(id -g ) \
720725 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -737,7 +742,7 @@ docker-run-tools: ### Run tools (Python) container - mandatory: CMD; optional: S
737742 $$ image \
738743 $(CMD )
739744 else
740- docker run --interactive $(_TTY ) --rm \
745+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
741746 --name $$ container \
742747 --user $$(id -u ) :$$(id -g ) \
743748 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
0 commit comments