chore: add Docker support for running the web host

This commit is contained in:
2026-02-24 18:35:12 +08:00
parent f16d254f84
commit 340459f783
4 changed files with 52 additions and 1 deletions

8
.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
.git
.gradle
.gradle-user
.idea
.kotlin
build
kls_database.db
scripts/.host-api-token

23
Dockerfile Normal file
View File

@@ -0,0 +1,23 @@
ARG BUILD_IMAGE=gradle:9.0.0-jdk17
ARG RUNTIME_IMAGE=eclipse-temurin:17-jre
FROM ${BUILD_IMAGE} AS build
WORKDIR /workspace
COPY gradlew gradlew
COPY gradle gradle
COPY build.gradle.kts settings.gradle.kts ./
COPY src src
RUN ./gradlew --no-daemon clean installDist
FROM ${RUNTIME_IMAGE}
WORKDIR /app
COPY --from=build /workspace/build/install/kotlin-scripts-host /app/kotlin-scripts-host
RUN mkdir -p /app/scripts
EXPOSE 8080
ENTRYPOINT ["/app/kotlin-scripts-host/bin/kotlin-scripts-host"]
CMD ["--port=8080", "--scripts-dir=/app/scripts"]

View File

@@ -119,3 +119,23 @@ Create/Edit/Delete behavior:
Editor selection:
- First uses `$EDITOR`
- Fallback to first available of `nvim`, `vim`, `nano`
## Docker
Build image:
```bash
docker build -t slhaf-hub:latest .
```
Run container (mount local scripts directory):
```bash
docker run --rm -p 8080:8080 \
-v /tmp/kotlin-scripts/scripts:/app/scripts \
-e HOST_API_TOKEN=your-token \
slhaf-hub:latest
```
Then call APIs:
```bash
curl http://127.0.0.1:8080/health
curl -H "Authorization: Bearer your-token" http://127.0.0.1:8080/scripts
```

View File

@@ -29,7 +29,7 @@ kotlin {
}
application {
mainClass.set("work.slhaf.hub.CliHostKt")
mainClass.set("work.slhaf.hub.WebHostKt")
}
val runCli by tasks.registering(JavaExec::class) {