diff --git a/deploy/tfs.sh b/deploy/tfs.sh
index 57d647cde5a094210c2f1b35bdc981d32418ad29..e81b946c87fd083af9e78ea62e045fea6fe7b9e4 100755
--- a/deploy/tfs.sh
+++ b/deploy/tfs.sh
@@ -45,6 +45,10 @@ export TFS_GRAFANA_PASSWORD=${TFS_GRAFANA_PASSWORD:-"admin123+"}
 # If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used.
 export TFS_SKIP_BUILD=${TFS_SKIP_BUILD:-""}
 
+# If not already set, disable build-if-exists flag to skip building Docker images if they already exist.
+# If TFS_BUILD_IF_EXISTS is "NO", the containers are not rebuilt if they already exist.
+export TFS_BUILD_IF_EXISTS=${TFS_BUILD_IF_EXISTS:-"NO"}
+
 
 # ----- CockroachDB ------------------------------------------------------------
 
@@ -208,72 +212,77 @@ for COMPONENT in $TFS_COMPONENTS; do
     echo "Processing '$COMPONENT' component..."
 
     if [ "$TFS_SKIP_BUILD" != "YES" ]; then
-        echo "  Building Docker image..."
-        BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log"
-
-        if [ "$COMPONENT" == "ztp" ] || [ "$COMPONENT" == "policy" ]; then
-            $DOCKER_BUILD -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG"
-        elif [ "$COMPONENT" == "pathcomp" ]; then
-            BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-frontend.log"
-            $DOCKER_BUILD -t "$COMPONENT-frontend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/frontend/Dockerfile . > "$BUILD_LOG"
-
-            BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-backend.log"
-            $DOCKER_BUILD -t "$COMPONENT-backend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/backend/Dockerfile . > "$BUILD_LOG"
-            # next command is redundant, but helpful to keep cache updated between rebuilds
-            IMAGE_NAME="$COMPONENT-backend:$TFS_IMAGE_TAG-builder"
-            $DOCKER_BUILD -t "$IMAGE_NAME" --target builder -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG"
-        elif [ "$COMPONENT" == "dlt" ]; then
-            BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-connector.log"
-            $DOCKER_BUILD -t "$COMPONENT-connector:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/connector/Dockerfile . > "$BUILD_LOG"
-
-            BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-gateway.log"
-            $DOCKER_BUILD -t "$COMPONENT-gateway:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/gateway/Dockerfile . > "$BUILD_LOG"
-        else
-            $DOCKER_BUILD -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG"
-        fi
+        IMAGE_EXISTS=$(docker images -q "$COMPONENT:$TFS_IMAGE_TAG")
+        if [ -z "$IMAGE_EXISTS" ] || [ "$TFS_BUILD_IF_EXISTS" == "YES" ]; then
+            echo "  Building Docker image..."
+            BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log"
 
-        echo "  Pushing Docker image to '$TFS_REGISTRY_IMAGES'..."
+            if [ "$COMPONENT" == "ztp" ] || [ "$COMPONENT" == "policy" ]; then
+                $DOCKER_BUILD -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG"
+            elif [ "$COMPONENT" == "pathcomp" ]; then
+                BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-frontend.log"
+                $DOCKER_BUILD -t "$COMPONENT-frontend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/frontend/Dockerfile . > "$BUILD_LOG"
 
-        if [ "$COMPONENT" == "pathcomp" ]; then
-            IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
+                BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-backend.log"
+                $DOCKER_BUILD -t "$COMPONENT-backend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/backend/Dockerfile . > "$BUILD_LOG"
+                # next command is redundant, but helpful to keep cache updated between rebuilds
+                IMAGE_NAME="$COMPONENT-backend:$TFS_IMAGE_TAG-builder"
+                $DOCKER_BUILD -t "$IMAGE_NAME" --target builder -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG"
+            elif [ "$COMPONENT" == "dlt" ]; then
+                BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-connector.log"
+                $DOCKER_BUILD -t "$COMPONENT-connector:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/connector/Dockerfile . > "$BUILD_LOG"
 
-            TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-frontend.log"
-            docker tag "$COMPONENT-frontend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+                BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-gateway.log"
+                $DOCKER_BUILD -t "$COMPONENT-gateway:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/gateway/Dockerfile . > "$BUILD_LOG"
+            else
+                $DOCKER_BUILD -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG"
+            fi
 
-            PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-frontend.log"
-            docker push "$IMAGE_URL" > "$PUSH_LOG"
+            echo "  Pushing Docker image to '$TFS_REGISTRY_IMAGES'..."
 
-            IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
+            if [ "$COMPONENT" == "pathcomp" ]; then
+                IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
 
-            TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-backend.log"
-            docker tag "$COMPONENT-backend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+                TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-frontend.log"
+                docker tag "$COMPONENT-frontend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
 
-            PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-backend.log"
-            docker push "$IMAGE_URL" > "$PUSH_LOG"
-        elif [ "$COMPONENT" == "dlt" ]; then
-            IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
+                PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-frontend.log"
+                docker push "$IMAGE_URL" > "$PUSH_LOG"
 
-            TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-connector.log"
-            docker tag "$COMPONENT-connector:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+                IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
 
-            PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-connector.log"
-            docker push "$IMAGE_URL" > "$PUSH_LOG"
+                TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-backend.log"
+                docker tag "$COMPONENT-backend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
 
-            IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
+                PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-backend.log"
+                docker push "$IMAGE_URL" > "$PUSH_LOG"
+            elif [ "$COMPONENT" == "dlt" ]; then
+                IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
 
-            TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-gateway.log"
-            docker tag "$COMPONENT-gateway:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+                TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-connector.log"
+                docker tag "$COMPONENT-connector:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
 
-            PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-gateway.log"
-            docker push "$IMAGE_URL" > "$PUSH_LOG"
-        else
-            IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
+                PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-connector.log"
+                docker push "$IMAGE_URL" > "$PUSH_LOG"
 
-            TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log"
-            docker tag "$COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+                IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
 
-            PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log"
-            docker push "$IMAGE_URL" > "$PUSH_LOG"
+                TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-gateway.log"
+                docker tag "$COMPONENT-gateway:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+
+                PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-gateway.log"
+                docker push "$IMAGE_URL" > "$PUSH_LOG"
+            else
+                IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g')
+
+                TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log"
+                docker tag "$COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG"
+
+                PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log"
+                docker push "$IMAGE_URL" > "$PUSH_LOG"
+            fi
+        else
+            echo "  Skipping Docker build for '$COMPONENT' as the image already exists and TFS_BUILD_IF_EXISTS is set to 'NO'."
         fi
     fi