@@ -45,6 +45,7 @@ COMPOSE_HTTP_TIMEOUT := $(or $(COMPOSE_HTTP_TIMEOUT), 6000)
4545DOCKER_CLIENT_TIMEOUT := $(or $(DOCKER_CLIENT_TIMEOUT ) , 6000)
4646
4747DOCKER_CMD =$(shell command -v docker >/dev/null 2>&1 && echo docker || echo podman)
48+ IS_PODMAN := $(shell [ "$(DOCKER_CMD ) " = "podman" ] && echo true || echo false)
4849
4950# ==============================================================================
5051
@@ -572,6 +573,75 @@ docker-run-python: ### Run python container - mandatory: CMD; optional: SH=true,
572573 "
573574 fi
574575
576+ # ###################################################################################################################################################
577+ # Enabling podman for docker-run-python target
578+
579+ # Detect Docker or Podman (default to Docker if both available)
580+ # docker-run-python: ### Run python container - works with Docker or Podman
581+ # make docker-config > /dev/null 2>&1
582+ # mkdir -p $(TMP_DIR)/.python/pip/{cache,packages}
583+
584+ # lib_volume_mount=$$(([ $(BUILD_ID) -eq 0 ] || [ "$(LIB_VOLUME_MOUNT)" = true ]) && echo "--volume $(TMP_DIR)/.python/pip/cache:/tmp/.cache/pip --volume $(TMP_DIR)/.python/pip/packages:/tmp/.packages" ||:)
585+
586+ # image=$$([ -n "$(IMAGE)" ] && echo $(IMAGE) || echo python:$(DOCKER_PYTHON_VERSION))
587+
588+ # container=$$([ -n "$(CONTAINER)" ] && echo $(CONTAINER) || echo python-$(BUILD_COMMIT_HASH)-$(BUILD_ID)-$$(date -u +"%Y%m%d%H%M%S")-$$(make secret-random LENGTH=8))
589+
590+ # # Handle env-files
591+ # if [ "$(IS_PODMAN)" = "true" ]; then \
592+ # envfile1=$$(mktemp); make _list-variables PATTERN="^(AWS|TX|TEXAS|NHSD|TERRAFORM)" > $$envfile1; \
593+ # envfile2=$$(mktemp); make _list-variables PATTERN="^(DB|DATABASE|SMTP|APP|APPLICATION|UI|API|SERVER|HOST|URL)" > $$envfile2; \
594+ # envfile3=$$(mktemp); make _list-variables PATTERN="^(PROFILE|ENVIRONMENT|BUILD|PROGRAMME|ORG|SERVICE|PROJECT)" > $$envfile3; \
595+ # envfile4=$$(mktemp); make _docker-get-variables-from-file VARS_FILE=$(VARS_FILE) > $$envfile4; \
596+ # env_files="--env-file=$$envfile1 --env-file=$$envfile2 --env-file=$$envfile3 --env-file=$$envfile4"; \
597+ # else \
598+ # env_files="--env-file=<(make _list-variables PATTERN=\"^(AWS|TX|TEXAS|NHSD|TERRAFORM)\") \
599+ # --env-file=<(make _list-variables PATTERN=\"^(DB|DATABASE|SMTP|APP|APPLICATION|UI|API|SERVER|HOST|URL)\") \
600+ # --env-file=<(make _list-variables PATTERN=\"^(PROFILE|ENVIRONMENT|BUILD|PROGRAMME|ORG|SERVICE|PROJECT)\") \
601+ # --env-file=<(make _docker-get-variables-from-file VARS_FILE=$(VARS_FILE))"; \
602+ # fi; \
603+
604+ # # Choose shell or not
605+ # if [[ ! "$(SH)" =~ ^(true|yes|y|on|1|TRUE|YES|Y|ON)$$ ]]; then \
606+ # eval $$(echo $(DOCKER_CMD)) run --interactive $(_TTY) --rm \
607+ # --name $$container \
608+ # --user $$(id -u):$$(id -g) \
609+ # $$env_files \
610+ # --env PIP_TARGET=/tmp/.packages \
611+ # --env PYTHONPATH=/tmp/.packages \
612+ # --env XDG_CACHE_HOME=/tmp/.cache \
613+ # --volume $(PROJECT_DIR):/project$(if $(filter podman,$(DOCKER_CMD)),:Z,) \
614+ # $$lib_volume_mount \
615+ # --network $(DOCKER_NETWORK) \
616+ # --workdir /project/$(shell echo $(abspath $(DIR)) | sed "s;$(PROJECT_DIR);;g") \
617+ # $(ARGS) \
618+ # $$image \
619+ # $(CMD); \
620+ # else \
621+ # eval $$(echo $(DOCKER_CMD)) run --interactive $(_TTY) --rm \
622+ # --name $$container \
623+ # --user $$(id -u):$$(id -g) \
624+ # $$env_files \
625+ # --env PIP_TARGET=/tmp/.packages \
626+ # --env PYTHONPATH=/tmp/.packages \
627+ # --env XDG_CACHE_HOME=/tmp/.cache \
628+ # --volume $(PROJECT_DIR):/project$(if $(filter podman,$(DOCKER_CMD)),:Z,) \
629+ # $$lib_volume_mount \
630+ # --network $(DOCKER_NETWORK) \
631+ # --workdir /project/$(shell echo $(abspath $(DIR)) | sed "s;$(PROJECT_DIR);;g") \
632+ # $(ARGS) \
633+ # $$image \
634+ # /bin/sh -c "$(CMD)"; \
635+ # fi; \
636+
637+ # # Cleanup temp env files
638+ # if [ "$(IS_PODMAN)" = "true" ]; then \
639+ # rm -f $$envfile1 $$envfile2 $$envfile3 $$envfile4; \
640+ # fi
641+
642+
643+ # ###################################################################################################################################################
644+
575645docker-run-sonar-scanner-cli : # ## Run sonar-scanner-cli container - mandatory: CMD; optional: SH=true,DIR,ARGS=[Docker args],VARS_FILE=[Makefile vars file],IMAGE=[image name],CONTAINER=[container name]
576646 make docker-config > /dev/null 2>&1
577647 mkdir -p $(TMP_DIR ) /.sonar/cache
@@ -615,7 +685,7 @@ docker-run-terraform-tfsec: ### Run terraform tfsec container - optional: DIR,AR
615685 make docker-config > /dev/null 2>&1
616686 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo aquasec/tfsec:$(DOCKER_TERRAFORM_TFSEC_VERSION ) )
617687 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 ) )
618- docker run --interactive $(_TTY ) --rm \
688+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
619689 --name $$ container \
620690 --user $$(id -u ) :$$(id -g ) \
621691 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
@@ -634,7 +704,7 @@ docker-run-checkov: ### Run checkov container - optional: DIR,ARGS=[Docker args]
634704 make docker-config > /dev/null 2>&1
635705 image=$$([ -n "$(IMAGE ) " ] && echo $(IMAGE ) || echo bridgecrew/checkov:$(DOCKER_CHECKOV_VERSION ) )
636706 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 ) )
637- docker run --interactive $(_TTY ) --rm \
707+ $( DOCKER_CMD ) run --interactive $(_TTY ) --rm \
638708 --name $$ container \
639709 --user $$(id -u ) :$$(id -g ) \
640710 --env-file <( make _list-variables PATTERN=" ^(AWS|TX|TEXAS|NHSD|TERRAFORM)" ) \
0 commit comments