forked from Botanical/BotanJS
55 lines
1.4 KiB
Makefile
55 lines
1.4 KiB
Makefile
IMAGE_NAME ?= botanjs
|
|
IMAGE_TAG ?= dev
|
|
|
|
JS_SRC_DIR ?= ./botanjs/src
|
|
GO_SRC_DIR ?= ./botanres-go
|
|
BUILDX_BUILDER ?= container-builder
|
|
BUILDINFO_FILE := internal/generated/buildinfo_gen.go
|
|
|
|
ensure-buildx:
|
|
@if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
|
|
echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
|
|
docker buildx create \
|
|
--name $(BUILDX_BUILDER) \
|
|
--driver docker-container \
|
|
--driver-opt network=host \
|
|
--bootstrap --use; \
|
|
else \
|
|
echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
|
|
docker buildx use $(BUILDX_BUILDER); \
|
|
fi
|
|
|
|
.buildinfo:
|
|
@mkdir -p $(dir $(BUILDINFO_FILE))
|
|
@printf '%s\n' \
|
|
'package generated' \
|
|
'' \
|
|
'const (' \
|
|
' IMAGE_TAG = "$(IMAGE_TAG)"' \
|
|
' Timestamp = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
|
|
')' \
|
|
> $(BUILDINFO_FILE)
|
|
|
|
gen:
|
|
docker build \
|
|
-f $(GO_SRC_DIR)/dockerfiles/gen.Dockerfile \
|
|
--output type=local,dest=$(GO_SRC_DIR)/internal/generated .
|
|
|
|
build: .buildinfo ensure-buildx gen
|
|
docker build \
|
|
-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
|
|
--load \
|
|
-t $(IMAGE_NAME):$(IMAGE_TAG) .
|
|
|
|
push: .buildinfo ensure-buildx gen
|
|
docker buildx build \
|
|
--platform linux/amd64,linux/arm64 \
|
|
-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
|
|
-t $(IMAGE_NAME):$(IMAGE_TAG) \
|
|
--push .
|
|
|
|
inspect:
|
|
docker buildx imagetools inspect $(IMAGE_NAME):$(IMAGE_TAG)
|
|
|
|
.PHONY: push build .buildinfo gen
|