CONTAINER_TOOL ?= podman REGISTRY ?= quay.io REGISTRY_ORG ?= ai-lab COMPONENT ?= model_servers CHAT_FORMAT ?= BIND_MOUNT_OPTIONS := ro OS := $(shell uname -s) ifeq ($(OS),Linux) BIND_MOUNT_OPTIONS := Z,ro endif .PHONY: build build: podman build --squash-all --build-arg PORT=$(PORT) -t $(IMAGE) . -f base/Containerfile .PHONY: install install: pip install -r tests/requirements.txt .PHONY: test test: @if [ ! -f "../../models/$(MODEL_NAME)" ]; then \ echo "Model file -- $(MODEL_NAME) -- not present in the models directory."; \ exit 1; \ else \ if [ ! -f "./$(MODEL_NAME)" ]; then \ ln -s ../../models/$(MODEL_NAME) ./$(MODEL_NAME); \ fi; \ REGISTRY=$(REGISTRY) IMAGE_NAME=$(IMAGE_NAME) MODEL_NAME=$(MODEL_NAME) MODEL_PATH=$(MODEL_PATH) PORT=$(PORT) pytest -vvv -s ; \ fi; .PHONY: clean clean: - rm ./$(MODEL_NAME) &> /dev/null .PHONY: run run: cd ../../models && \ podman run -it \ -d \ -p $(PORT):$(PORT) \ -v ./$(MODEL_NAME):$(MODELS_PATH)/$(MODEL_NAME):$(BIND_MOUNT_OPTIONS) \ -e MODEL_PATH=$(MODELS_PATH)/$(MODEL_NAME) \ -e HOST=0.0.0.0 \ -e PORT=$(PORT) \ $(CHAT_FORMAT:%=-e CHAT_FORMAT=${CHAT_FORMAT}) \ $(IMAGE) .PHONY: podman-clean podman-clean: @container_ids=$$(podman ps --format "{{.ID}} {{.Image}}" | awk '$$2 == "$(IMAGE)" {print $$1}'); \ echo "removing all containers with IMAGE=$(IMAGE)"; \ for id in $$container_ids; do \ echo "Removing container: $$id,"; \ podman rm -f $$id; \ done