From e00aff5e5a8ede863e2b30acd637d192fe3d23a6 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Sun, 7 Jul 2024 15:20:15 +0200 Subject: [PATCH] docker container --- .dockerignore | 4 +++ Dockerfile | 35 +++++++++++++++++++ docker-compose.example.yml | 23 ++++++++++++ dockerentry.sh | 10 ++++++ .../com/usatiuk/dhfs/webui/WebUiRouter.java | 1 + webui/.dockerignore | 3 -- 6 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.example.yml create mode 100644 dockerentry.sh delete mode 100644 webui/.dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..4c264a6c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +**/.parcel-cache +**/dist +**/node_modules +**/target diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..d7340fae --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM node:20-bullseye as webui-build + +WORKDIR /usr/src/app/webui-build +COPY ./webui/package*.json ./ +RUN npm i +COPY ./webui/. . +RUN npm run build + +FROM azul/zulu-openjdk:21 as server-build + +WORKDIR /usr/src/app/server-build +COPY ./server/.mvn .mvn +COPY ./server/mvnw ./server/pom.xml ./ +RUN ./mvnw quarkus:go-offline +# The previous thing still doesn't download 100% everything +RUN ./mvnw -Dmaven.test.skip=true -Dskip.unit=true package --fail-never +COPY ./server/. . +RUN ./mvnw -Dmaven.test.skip=true -Dskip.unit=true clean package + +FROM azul/zulu-openjdk-alpine:21 + +RUN apk update && apk add fuse && rm -rf /var/cache/apk/* + +WORKDIR /usr/src/app +COPY --from=server-build /usr/src/app/server-build/target/quarkus-app/. . +RUN mkdir -p webui +COPY --from=webui-build /usr/src/app/webui-build/dist/. ./webui + +ENV dhfs_webui_root=/usr/src/app/webui + +COPY ./dockerentry.sh . + +RUN ["chmod", "+x", "./dockerentry.sh"] + +CMD [ "./dockerentry.sh" ] \ No newline at end of file diff --git a/docker-compose.example.yml b/docker-compose.example.yml new file mode 100644 index 00000000..8d88c2dc --- /dev/null +++ b/docker-compose.example.yml @@ -0,0 +1,23 @@ +version: "3.2" + +services: + dhfs1: + build: . + privileged: true + devices: + - /dev/fuse + command: "./dockerentry.sh -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5010" + ports: + - 8080:8080 + - 8081:8443 + - 5005:5005 + dhfs2: + build: . + privileged: true + devices: + - /dev/fuse + command: "./dockerentry.sh -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5010" + ports: + - 8090:8080 + - 8091:8443 + - 5010:5010 diff --git a/dockerentry.sh b/dockerentry.sh new file mode 100644 index 00000000..d8aea21d --- /dev/null +++ b/dockerentry.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +exec java \ + --add-exports java.base/sun.nio.ch=ALL-UNNAMED \ + -Ddhfs.objects.persistence.files.root=/dhfs_root/p \ + -Ddhfs.objects.distributed.root=/dhfs_root/d \ + -Ddhfs.fuse.root=/dhfs_root_fuse \ + -Dquarkus.http.host=0.0.0.0 \ + "$@" \ + -jar quarkus-run.jar diff --git a/server/src/main/java/com/usatiuk/dhfs/webui/WebUiRouter.java b/server/src/main/java/com/usatiuk/dhfs/webui/WebUiRouter.java index bd307ab2..2f285c42 100644 --- a/server/src/main/java/com/usatiuk/dhfs/webui/WebUiRouter.java +++ b/server/src/main/java/com/usatiuk/dhfs/webui/WebUiRouter.java @@ -20,6 +20,7 @@ public class WebUiRouter { void installRoute(@Observes StartupEvent startupEvent, Router router) { root.ifPresent(r -> { + router.route().path("/").handler(ctx -> ctx.redirect("/webui")); router.route() .path("/webui/*") .handler(this::handle); diff --git a/webui/.dockerignore b/webui/.dockerignore deleted file mode 100644 index ef718b97..00000000 --- a/webui/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -.parcel-cache -dist -node_modules