mirror of
https://github.com/furyhawk/api_gateway.git
synced 2026-07-20 09:47:59 +00:00
94 lines
3.2 KiB
Makefile
94 lines
3.2 KiB
Makefile
SHELL := /bin/sh
|
|
|
|
CONTAINER_ENGINE ?= $(shell command -v podman >/dev/null 2>&1 && echo podman || echo docker)
|
|
IMAGE_NAME ?= openapi-api-gateway
|
|
IMAGE_TAG ?= latest
|
|
CONTAINER_NAME ?= openapi-api-gateway
|
|
PORT ?= 8000
|
|
GATEWAY_PORT ?= $(PORT)
|
|
ENV_FILE ?= .env
|
|
CONFIG_PROFILE ?= local
|
|
COMPOSE_FILE ?= docker-compose.dev.yml
|
|
COMPANION_OPENAPI ?= http://127.0.0.1:8068/openapi.json
|
|
|
|
ifeq ($(origin GATEWAY_CONFIG_PATH), undefined)
|
|
ifeq ($(CONFIG_PROFILE),container)
|
|
GATEWAY_CONFIG_PATH := config/gateway.container.yaml
|
|
else
|
|
GATEWAY_CONFIG_PATH := config/gateway.yaml
|
|
endif
|
|
endif
|
|
|
|
RUN_ENV := $(if $(wildcard $(ENV_FILE)),--env-file $(ENV_FILE),)
|
|
|
|
.PHONY: help build run run-local stop logs shell test test-container fmt clean check-companion-parity compose-up compose-down compose-logs
|
|
|
|
help:
|
|
@echo "Targets:"
|
|
@echo " make build Build container image"
|
|
@echo " make run Run gateway container with CONFIG_PROFILE=local|container"
|
|
@echo " make run-local Run gateway with uv and CONFIG_PROFILE=local|container"
|
|
@echo " make stop Stop and remove container"
|
|
@echo " make logs Follow container logs"
|
|
@echo " make shell Open shell in running container"
|
|
@echo " make test Run local pytest suite with uv"
|
|
@echo " make test-container Run tests in container image"
|
|
@echo " make check-companion-parity Compare selected gateway profile to companion OpenAPI"
|
|
@echo " make compose-up Build and start companion backend plus gateway with Docker Compose"
|
|
@echo " make compose-down Stop the dev compose stack"
|
|
@echo " make compose-logs Follow logs for the dev compose stack"
|
|
@echo " make fmt Run ruff format checks"
|
|
@echo " make clean Remove image and stopped container"
|
|
|
|
build:
|
|
$(CONTAINER_ENGINE) build -t $(IMAGE_NAME):$(IMAGE_TAG) -f Dockerfile .
|
|
|
|
run:
|
|
$(MAKE) stop >/dev/null 2>&1 || true
|
|
$(CONTAINER_ENGINE) run -d \
|
|
--name $(CONTAINER_NAME) \
|
|
-p $(PORT):$(GATEWAY_PORT) \
|
|
-e GATEWAY_CONFIG_PATH=$(GATEWAY_CONFIG_PATH) \
|
|
-e GATEWAY_PORT=$(GATEWAY_PORT) \
|
|
$(RUN_ENV) \
|
|
$(IMAGE_NAME):$(IMAGE_TAG)
|
|
@echo "Gateway is running on http://127.0.0.1:$(PORT) using $(GATEWAY_CONFIG_PATH) (bind port $(GATEWAY_PORT))"
|
|
|
|
run-local:
|
|
GATEWAY_CONFIG_PATH=$(GATEWAY_CONFIG_PATH) GATEWAY_PORT=$(GATEWAY_PORT) uv run python -m gateway_framework.main
|
|
|
|
stop:
|
|
-$(CONTAINER_ENGINE) rm -f $(CONTAINER_NAME)
|
|
|
|
logs:
|
|
$(CONTAINER_ENGINE) logs -f $(CONTAINER_NAME)
|
|
|
|
shell:
|
|
$(CONTAINER_ENGINE) exec -it $(CONTAINER_NAME) sh
|
|
|
|
test:
|
|
uv run pytest -q
|
|
|
|
test-container:
|
|
$(CONTAINER_ENGINE) run --rm $(IMAGE_NAME):$(IMAGE_TAG) uv run pytest -q
|
|
|
|
check-companion-parity:
|
|
uv run python -m gateway_framework.companion --config $(GATEWAY_CONFIG_PATH) --openapi $(COMPANION_OPENAPI)
|
|
|
|
compose-up:
|
|
$(CONTAINER_ENGINE) compose -f $(COMPOSE_FILE) up --build -d lta-datamall-api
|
|
$(MAKE) check-companion-parity CONFIG_PROFILE=container
|
|
$(CONTAINER_ENGINE) compose -f $(COMPOSE_FILE) up --build -d gateway
|
|
|
|
compose-down:
|
|
$(CONTAINER_ENGINE) compose -f $(COMPOSE_FILE) down --remove-orphans
|
|
|
|
compose-logs:
|
|
$(CONTAINER_ENGINE) compose -f $(COMPOSE_FILE) logs -f
|
|
|
|
fmt:
|
|
uv run ruff check .
|
|
|
|
clean: stop
|
|
-$(CONTAINER_ENGINE) rmi $(IMAGE_NAME):$(IMAGE_TAG)
|