feat: add podman support to Makefile
Auto-detects podman or docker, with override via CONTAINER_ENGINE. Podman uses 'podman build', docker uses 'docker buildx build --load'.
This commit is contained in:
49
Makefile
49
Makefile
@@ -5,6 +5,10 @@ REGISTRY := git.daviestechlabs.io/daviestechlabs
|
|||||||
TAG := latest
|
TAG := latest
|
||||||
PLATFORM := linux/amd64
|
PLATFORM := linux/amd64
|
||||||
|
|
||||||
|
# Container runtime: auto-detect podman or docker
|
||||||
|
# Override with: make CONTAINER_ENGINE=podman
|
||||||
|
CONTAINER_ENGINE := $(shell command -v podman >/dev/null 2>&1 && echo podman || echo docker)
|
||||||
|
|
||||||
# Image names
|
# Image names
|
||||||
IMAGES := ray-worker-nvidia ray-worker-rdna2 ray-worker-strixhalo ray-worker-intel
|
IMAGES := ray-worker-nvidia ray-worker-rdna2 ray-worker-strixhalo ray-worker-intel
|
||||||
|
|
||||||
@@ -23,8 +27,10 @@ help:
|
|||||||
@echo " make push-nvidia Push NVIDIA worker image"
|
@echo " make push-nvidia Push NVIDIA worker image"
|
||||||
@echo " make lint Lint Dockerfiles with hadolint"
|
@echo " make lint Lint Dockerfiles with hadolint"
|
||||||
@echo " make TAG=v1.0.0 push-all Push with specific tag"
|
@echo " make TAG=v1.0.0 push-all Push with specific tag"
|
||||||
|
@echo " make CONTAINER_ENGINE=podman build-all Use podman instead of docker"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Environment:"
|
@echo "Environment:"
|
||||||
|
@echo " CONTAINER_ENGINE=$(CONTAINER_ENGINE)"
|
||||||
@echo " REGISTRY=$(REGISTRY)"
|
@echo " REGISTRY=$(REGISTRY)"
|
||||||
@echo " TAG=$(TAG)"
|
@echo " TAG=$(TAG)"
|
||||||
@echo " PLATFORM=$(PLATFORM)"
|
@echo " PLATFORM=$(PLATFORM)"
|
||||||
@@ -39,37 +45,36 @@ lint:
|
|||||||
hadolint dockerfiles/Dockerfile.ray-worker-intel
|
hadolint dockerfiles/Dockerfile.ray-worker-intel
|
||||||
@echo "Lint passed!"
|
@echo "Lint passed!"
|
||||||
|
|
||||||
# Build targets using buildx for cache support
|
# Build targets - works with both docker buildx and podman build
|
||||||
|
# Podman uses 'build' directly, docker uses 'buildx build'
|
||||||
|
ifeq ($(CONTAINER_ENGINE),podman)
|
||||||
|
BUILD_CMD = $(CONTAINER_ENGINE) build --platform $(PLATFORM)
|
||||||
|
else
|
||||||
|
BUILD_CMD = $(CONTAINER_ENGINE) buildx build --platform $(PLATFORM) --load
|
||||||
|
endif
|
||||||
|
|
||||||
build-nvidia:
|
build-nvidia:
|
||||||
docker buildx build \
|
$(BUILD_CMD) \
|
||||||
--platform $(PLATFORM) \
|
|
||||||
--tag $(REGISTRY)/ray-worker-nvidia:$(TAG) \
|
--tag $(REGISTRY)/ray-worker-nvidia:$(TAG) \
|
||||||
--file dockerfiles/Dockerfile.ray-worker-nvidia \
|
--file dockerfiles/Dockerfile.ray-worker-nvidia \
|
||||||
--load \
|
|
||||||
.
|
.
|
||||||
|
|
||||||
build-rdna2:
|
build-rdna2:
|
||||||
docker buildx build \
|
$(BUILD_CMD) \
|
||||||
--platform $(PLATFORM) \
|
|
||||||
--tag $(REGISTRY)/ray-worker-rdna2:$(TAG) \
|
--tag $(REGISTRY)/ray-worker-rdna2:$(TAG) \
|
||||||
--file dockerfiles/Dockerfile.ray-worker-rdna2 \
|
--file dockerfiles/Dockerfile.ray-worker-rdna2 \
|
||||||
--load \
|
|
||||||
.
|
.
|
||||||
|
|
||||||
build-strixhalo:
|
build-strixhalo:
|
||||||
docker buildx build \
|
$(BUILD_CMD) \
|
||||||
--platform $(PLATFORM) \
|
|
||||||
--tag $(REGISTRY)/ray-worker-strixhalo:$(TAG) \
|
--tag $(REGISTRY)/ray-worker-strixhalo:$(TAG) \
|
||||||
--file dockerfiles/Dockerfile.ray-worker-strixhalo \
|
--file dockerfiles/Dockerfile.ray-worker-strixhalo \
|
||||||
--load \
|
|
||||||
.
|
.
|
||||||
|
|
||||||
build-intel:
|
build-intel:
|
||||||
docker buildx build \
|
$(BUILD_CMD) \
|
||||||
--platform $(PLATFORM) \
|
|
||||||
--tag $(REGISTRY)/ray-worker-intel:$(TAG) \
|
--tag $(REGISTRY)/ray-worker-intel:$(TAG) \
|
||||||
--file dockerfiles/Dockerfile.ray-worker-intel \
|
--file dockerfiles/Dockerfile.ray-worker-intel \
|
||||||
--load \
|
|
||||||
.
|
.
|
||||||
|
|
||||||
build-all: build-nvidia build-rdna2 build-strixhalo build-intel
|
build-all: build-nvidia build-rdna2 build-strixhalo build-intel
|
||||||
@@ -77,16 +82,16 @@ build-all: build-nvidia build-rdna2 build-strixhalo build-intel
|
|||||||
|
|
||||||
# Push targets
|
# Push targets
|
||||||
push-nvidia:
|
push-nvidia:
|
||||||
docker push $(REGISTRY)/ray-worker-nvidia:$(TAG)
|
$(CONTAINER_ENGINE) push $(REGISTRY)/ray-worker-nvidia:$(TAG)
|
||||||
|
|
||||||
push-rdna2:
|
push-rdna2:
|
||||||
docker push $(REGISTRY)/ray-worker-rdna2:$(TAG)
|
$(CONTAINER_ENGINE) push $(REGISTRY)/ray-worker-rdna2:$(TAG)
|
||||||
|
|
||||||
push-strixhalo:
|
push-strixhalo:
|
||||||
docker push $(REGISTRY)/ray-worker-strixhalo:$(TAG)
|
$(CONTAINER_ENGINE) push $(REGISTRY)/ray-worker-strixhalo:$(TAG)
|
||||||
|
|
||||||
push-intel:
|
push-intel:
|
||||||
docker push $(REGISTRY)/ray-worker-intel:$(TAG)
|
$(CONTAINER_ENGINE) push $(REGISTRY)/ray-worker-intel:$(TAG)
|
||||||
|
|
||||||
push-all: push-nvidia push-rdna2 push-strixhalo push-intel
|
push-all: push-nvidia push-rdna2 push-strixhalo push-intel
|
||||||
@echo "All images pushed successfully"
|
@echo "All images pushed successfully"
|
||||||
@@ -104,11 +109,11 @@ endif
|
|||||||
|
|
||||||
# Login to registry
|
# Login to registry
|
||||||
login:
|
login:
|
||||||
docker login $(REGISTRY)
|
$(CONTAINER_ENGINE) login $(REGISTRY)
|
||||||
|
|
||||||
# Clean local images
|
# Clean local images
|
||||||
clean:
|
clean:
|
||||||
-docker rmi $(REGISTRY)/ray-worker-nvidia:$(TAG)
|
-$(CONTAINER_ENGINE) rmi $(REGISTRY)/ray-worker-nvidia:$(TAG)
|
||||||
-docker rmi $(REGISTRY)/ray-worker-rdna2:$(TAG)
|
-$(CONTAINER_ENGINE) rmi $(REGISTRY)/ray-worker-rdna2:$(TAG)
|
||||||
-docker rmi $(REGISTRY)/ray-worker-strixhalo:$(TAG)
|
-$(CONTAINER_ENGINE) rmi $(REGISTRY)/ray-worker-strixhalo:$(TAG)
|
||||||
-docker rmi $(REGISTRY)/ray-worker-intel:$(TAG)
|
-$(CONTAINER_ENGINE) rmi $(REGISTRY)/ray-worker-intel:$(TAG)
|
||||||
|
|||||||
Reference in New Issue
Block a user