|
| 1 | +# Makefile for M3 Docker Image Build and Push |
| 2 | +DOCKER ?= docker |
| 3 | +IMAGE_NAME := m3-mimic-demo |
| 4 | +IMAGE_TAG ?= 0.4.0 |
| 5 | + |
| 6 | +# Prompt for registry only if not set |
| 7 | +ifndef DOCKER_REGISTRY |
| 8 | +DOCKER_REGISTRY := $(shell bash -c 'read -p "Enter Docker registry/username: " registry; echo $${registry}') |
| 9 | +endif |
| 10 | + |
| 11 | +DOCKER_IMAGE := $(DOCKER_REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG) |
| 12 | + |
| 13 | +DB_FILE := m3_data/databases/mimic_iv_demo.db |
| 14 | + |
| 15 | +.PHONY: help |
| 16 | +help: ## Show help |
| 17 | + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}' |
| 18 | + |
| 19 | +.PHONY: all |
| 20 | +all: download-db build push ## Complete workflow: download DB, build and push |
| 21 | + |
| 22 | +.PHONY: login |
| 23 | +login: ## Login to Docker Hub |
| 24 | + @$(DOCKER) login docker.io |
| 25 | + |
| 26 | +.PHONY: download-db |
| 27 | +download-db: ## Download MIMIC-IV demo database |
| 28 | + @uv sync |
| 29 | + @uv run m3 init mimic-iv-demo |
| 30 | + |
| 31 | +.PHONY: build |
| 32 | +build: ## Build Docker image (lite version) |
| 33 | + @test -f $(DB_FILE) || { echo "Run 'make download-db' first"; exit 1; } |
| 34 | + @$(DOCKER) build --target lite -t $(DOCKER_IMAGE) -t $(DOCKER_REGISTRY)/$(IMAGE_NAME):lite . |
| 35 | + |
| 36 | +.PHONY: build-bigquery |
| 37 | +build-bigquery: ## Build BigQuery version |
| 38 | + @test -f $(DB_FILE) || { echo "Run 'make download-db' first"; exit 1; } |
| 39 | + @$(DOCKER) build --target bigquery -t $(DOCKER_REGISTRY)/$(IMAGE_NAME):bigquery . |
| 40 | + |
| 41 | +.PHONY: push |
| 42 | +push: ## Push Docker image to registry (run 'make login' first) |
| 43 | + @$(DOCKER) push $(DOCKER_IMAGE) |
| 44 | + @$(DOCKER) push $(DOCKER_REGISTRY)/$(IMAGE_NAME):lite |
| 45 | + |
| 46 | +.PHONY: push-bigquery |
| 47 | +push-bigquery: ## Push BigQuery image (run 'make login' first) |
| 48 | + @$(DOCKER) push $(DOCKER_REGISTRY)/$(IMAGE_NAME):bigquery |
| 49 | + |
| 50 | +.PHONY: test-image |
| 51 | +test-image: ## Test the built Docker image |
| 52 | + @$(DOCKER) run --rm $(DOCKER_IMAGE) python -c "import m3; print(f'M3 version: {m3.__version__}')" |
| 53 | + |
| 54 | +.PHONY: clean |
| 55 | +clean: ## Remove database and raw files |
| 56 | + @rm -rf m3_data |
| 57 | + |
| 58 | +.DEFAULT_GOAL := help |
0 commit comments