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 WORKDIR /src
ARG JAVA_SRC_DIR
ARG CLOSURE_NAME
# Copy pom first so Docker can cache dependencies. # Copy pom first so Docker can cache dependencies.
COPY pom.xml . COPY $JAVA_SRC_DIR/pom.xml .
RUN --mount=type=cache,target=/root/.m2 \ RUN --mount=type=cache,target=/root/.m2 \
mvn -B -DskipTests dependency:go-offline mvn -B -DskipTests dependency:go-offline
COPY src ./src COPY $JAVA_SRC_DIR/src ./src
RUN --mount=type=cache,target=/root/.m2 \ RUN --mount=type=cache,target=/root/.m2 \
mvn -B -DskipTests package mvn -B -DskipTests package
FROM eclipse-temurin:21-jre FROM eclipse-temurin:21-jre
WORKDIR /app WORKDIR /app
ARG JAVA_SRC_DIR
ARG CLOSURE_NAME
RUN useradd -r -u 10001 closure RUN useradd -r -u 10001 closure
COPY --from=build /src/target/closure-compilerd-0.1.0.jar /app/closure-compilerd.jar COPY --from=build /src/target/${CLOSURE_NAME}-0.1.0.jar /app/runtime.jar
COPY $JAVA_SRC_DIR/example ./example
# Optional: put your JS source tree/configs here if you want the container
# to compile files from inside the image.
COPY example ./example
USER closure USER closure
@@ -34,4 +36,4 @@ ENV CLOSURED_WORKERS=2
EXPOSE 8080 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. Tiny Closure Compiler HTTP daemon using Java's built-in HTTP server.
@@ -14,7 +14,7 @@ mvn -DskipTests package
CLOSURED_ROOT=$PWD \ CLOSURED_ROOT=$PWD \
CLOSURED_PORT=8080 \ CLOSURED_PORT=8080 \
CLOSURED_WORKERS=2 \ 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 ## Test
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>dev.tgckpg</groupId> <groupId>dev.tgckpg</groupId>
<artifactId>closure-compilerd</artifactId> <artifactId>closure-api</artifactId>
<version>0.1.0</version> <version>0.1.0</version>
<properties> <properties>
@@ -41,7 +41,7 @@ public final class Main {
server.createContext("/compile", Main::compile); server.createContext("/compile", Main::compile);
server.start(); 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 { private static void health(HttpExchange ex) throws IOException {
+1 -1
View File
@@ -2,5 +2,5 @@ package generated
const ( const (
IMAGE_TAG = "dev" 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 return
} }
log.Println(res.JSFiles)
// Compatibility flags: // Compatibility flags:
// rjs/rcss/ojs/ocss => content // rjs/rcss/ojs/ocss => content
// hjs/hcss => hash filename only // hjs/hcss => hash filename only
@@ -5,14 +5,14 @@ WORKDIR /workspace
ARG TARGETOS ARG TARGETOS
ARG TARGETARCH 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 \ RUN --mount=type=cache,target=/go/pkg/mod \
go mod download go mod download
COPY "botanjs/src" "./src" COPY "botanjs/src" "./src"
COPY "botanres-go/cmd" "./cmd" COPY "resolver-go/cmd" "./cmd"
COPY "botanres-go/internal" "./internal" COPY "resolver-go/internal" "./internal"
RUN --mount=type=cache,target=/go/pkg/mod \ RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/root/.cache/go-build \
@@ -5,14 +5,14 @@ WORKDIR /workspace
ARG TARGETOS ARG TARGETOS
ARG TARGETARCH 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 \ RUN --mount=type=cache,target=/go/pkg/mod \
go mod download go mod download
COPY "botanjs/src" "./src" COPY "botanjs/src" "./src"
COPY "botanres-go/cmd" "./cmd" COPY "resolver-go/cmd" "./cmd"
COPY "botanres-go/internal" "./internal" COPY "resolver-go/internal" "./internal"
RUN go run ./cmd/botan-gen \ RUN go run ./cmd/botan-gen \
-src ./src \ -src ./src \