forked from Botanical/BotanJS
Rename the components
This commit is contained in:
@@ -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>
|
||||||
+1
-1
@@ -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 {
|
||||||
@@ -2,5 +2,5 @@ package generated
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
IMAGE_TAG = "dev"
|
IMAGE_TAG = "dev"
|
||||||
Timestamp = "20260610.220306"
|
Timestamp = "20260611.005458"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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 \
|
||||||
Reference in New Issue
Block a user