Rename the components

This commit is contained in:
2026-06-11 08:56:40 +08:00
parent 1a38577817
commit 4fcd58b5ed
24 changed files with 116 additions and 74 deletions
+7
View File
@@ -0,0 +1,7 @@
include mk/common.mk
include mk/resolver-go.mk
include mk/closure-api.mk
build: build-resolver build-closure
.PHONY: build
@@ -2,29 +2,31 @@ FROM maven:3.9-eclipse-temurin-21 AS build
WORKDIR /src
ARG JAVA_SRC_DIR
ARG CLOSURE_NAME
# Copy pom first so Docker can cache dependencies.
COPY pom.xml .
COPY $JAVA_SRC_DIR/pom.xml .
RUN --mount=type=cache,target=/root/.m2 \
mvn -B -DskipTests dependency:go-offline
COPY src ./src
COPY $JAVA_SRC_DIR/src ./src
RUN --mount=type=cache,target=/root/.m2 \
mvn -B -DskipTests package
FROM eclipse-temurin:21-jre
WORKDIR /app
ARG JAVA_SRC_DIR
ARG CLOSURE_NAME
RUN useradd -r -u 10001 closure
COPY --from=build /src/target/closure-compilerd-0.1.0.jar /app/closure-compilerd.jar
# Optional: put your JS source tree/configs here if you want the container
# to compile files from inside the image.
COPY example ./example
COPY --from=build /src/target/${CLOSURE_NAME}-0.1.0.jar /app/runtime.jar
COPY $JAVA_SRC_DIR/example ./example
USER closure
@@ -34,4 +36,4 @@ ENV CLOSURED_WORKERS=2
EXPOSE 8080
ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/closure-compilerd.jar"]
ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/runtime.jar"]
@@ -1,4 +1,4 @@
# closure-compilerd-min
# closure-api-min
Tiny Closure Compiler HTTP daemon using Java's built-in HTTP server.
@@ -14,7 +14,7 @@ mvn -DskipTests package
CLOSURED_ROOT=$PWD \
CLOSURED_PORT=8080 \
CLOSURED_WORKERS=2 \
java -Xms256m -Xmx2g -jar target/closure-compilerd-0.1.0.jar
java -Xms256m -Xmx2g -jar target/closure-api-0.1.0.jar
```
## Test
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>dev.tgckpg</groupId>
<artifactId>closure-compilerd</artifactId>
<artifactId>closure-api</artifactId>
<version>0.1.0</version>
<properties>
@@ -41,7 +41,7 @@ public final class Main {
server.createContext("/compile", Main::compile);
server.start();
System.err.printf("closure-compilerd listening on http://0.0.0.0:%d root=%s workers=%d%n", PORT, ROOT, WORKERS);
System.err.printf("closure-api listening on http://0.0.0.0:%d root=%s workers=%d%n", PORT, ROOT, WORKERS);
}
private static void health(HttpExchange ex) throws IOException {
+1 -1
View File
@@ -2,5 +2,5 @@ package generated
const (
IMAGE_TAG = "dev"
Timestamp = "20260610.220306"
Timestamp = "20260611.005458"
)
-54
View File
@@ -1,54 +0,0 @@
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
+27
View File
@@ -0,0 +1,27 @@
CLOSURE_IMAGE_NAME ?= closure-api
CLOSURE_IMAGE_TAG ?= dev
CLOSURE_SRC_DIR = ./closure-api
CLOSURE_NAME = closure-api
build-closure:
docker build \
-f $(CLOSURE_SRC_DIR)/Dockerfile \
--build-arg JAVA_SRC_DIR=$(CLOSURE_SRC_DIR) \
--build-arg CLOSURE_NAME=$(CLOSURE_NAME) \
--load \
-t $(CLOSURE_IMAGE_NAME):$(CLOSURE_IMAGE_TAG) .
push-closure: ensure-buildx
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f $(CLOSURE_SRC_DIR)/Dockerfile \
--build-arg JAVA_SRC_DIR=$(CLOSURE_SRC_DIR) \
--build-arg CLOSURE_NAME=$(CLOSURE_NAME) \
-t $(CLOSURE_IMAGE_NAME):$(CLOSURE_IMAGE_TAG) \
--push .
inspect-closure:
docker buildx imagetools inspect $(CLOSURE_IMAGE_NAME):$(CLOSURE_IMAGE_TAG)
.PHONY: build-closure push-closure inspect-closure
+18
View File
@@ -0,0 +1,18 @@
JS_SRC_DIR ?= ./botanjs/src
BUILDX_BUILDER ?= container-builder
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
.PHONY: ensure-buildx
+40
View File
@@ -0,0 +1,40 @@
RESOLVER_IMAGE_NAME ?= botanjs
RESOLVER_IMAGE_TAG ?= dev
GO_SRC_DIR ?= ./resolver-go
BUILDINFO_FILE := internal/generated/buildinfo_gen.go
.buildinfo:
@mkdir -p $(dir $(BUILDINFO_FILE))
@printf '%s\n' \
'package generated' \
'' \
'const (' \
' IMAGE_TAG = "$(RESOLVER_IMAGE_TAG)"' \
' Timestamp = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
')' \
> $(BUILDINFO_FILE)
resolver-gen:
docker build \
-f $(GO_SRC_DIR)/dockerfiles/gen.Dockerfile \
--output type=local,dest=$(GO_SRC_DIR)/internal/generated .
build-resolver: .buildinfo ensure-buildx resolver-gen
docker build \
-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
--load \
-t $(RESOLVER_IMAGE_NAME):$(RESOLVER_IMAGE_TAG) .
push-resolver: .buildinfo ensure-buildx resolver-gen
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
-t $(RESOLVER_IMAGE_NAME):$(RESOLVER_IMAGE_TAG) \
--push .
inspect-resolver:
docker buildx imagetools inspect $(RESOLVER_IMAGE_NAME):$(RESOLVER_IMAGE_TAG)
.PHONY: push-resolver build-resolver .buildinfo resolver-gen
@@ -61,6 +61,8 @@ func (h handler) index(w http.ResponseWriter, req *http.Request) {
return
}
log.Println(res.JSFiles)
// Compatibility flags:
// rjs/rcss/ojs/ocss => content
// hjs/hcss => hash filename only
@@ -5,14 +5,14 @@ WORKDIR /workspace
ARG TARGETOS
ARG TARGETARCH
COPY botanres-go/go.mod botanres-go/go.sum ./
COPY resolver-go/go.mod resolver-go/go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod \
go mod download
COPY "botanjs/src" "./src"
COPY "botanres-go/cmd" "./cmd"
COPY "botanres-go/internal" "./internal"
COPY "resolver-go/cmd" "./cmd"
COPY "resolver-go/internal" "./internal"
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
@@ -5,14 +5,14 @@ WORKDIR /workspace
ARG TARGETOS
ARG TARGETARCH
COPY botanres-go/go.mod botanres-go/go.sum ./
COPY resolver-go/go.mod resolver-go/go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod \
go mod download
COPY "botanjs/src" "./src"
COPY "botanres-go/cmd" "./cmd"
COPY "botanres-go/internal" "./internal"
COPY "resolver-go/cmd" "./cmd"
COPY "resolver-go/internal" "./internal"
RUN go run ./cmd/botan-gen \
-src ./src \