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
|
||||
|
||||
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>
|
||||
+1
-1
@@ -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 {
|
||||
@@ -2,5 +2,5 @@ package generated
|
||||
|
||||
const (
|
||||
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
|
||||
}
|
||||
|
||||
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 \
|
||||
Reference in New Issue
Block a user