From 6a2e53bc007b72470c469257bc2c1976fd297219 Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Tue, 3 Mar 2026 03:45:23 +0800 Subject: [PATCH] added redis-enabled docker image --- .gitea/workflows/build-dev.yaml | 12 +++++ .gitea/workflows/build.yaml | 15 ++++++ docker/Dockerfile | 9 ++++ rbcs-cli/build.gradle | 3 ++ rbcs-cli/conf/rbcs-server-redis.xml | 53 +++++++++++++++++++ .../graal/GraalNativeImageConfiguration.kt | 31 +++++++++-- 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 rbcs-cli/conf/rbcs-server-redis.xml diff --git a/.gitea/workflows/build-dev.yaml b/.gitea/workflows/build-dev.yaml index 55aedb5..3b6f882 100644 --- a/.gitea/workflows/build-dev.yaml +++ b/.gitea/workflows/build-dev.yaml @@ -46,6 +46,18 @@ jobs: tags: | gitea.woggioni.net/woggioni/rbcs:memcache-dev target: release-memcache + - + name: Build rbcs redis Docker image + uses: docker/build-push-action@v5.3.0 + with: + builder: "multiplatform-builder" + context: "docker/build/docker" + platforms: linux/amd64,linux/arm64 + push: true + pull: true + tags: | + gitea.woggioni.net/woggioni/rbcs:redis-dev + target: release-redis - name: Build rbcs native Docker image uses: docker/build-push-action@v5.3.0 diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index c9692f0..868c01c 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -50,6 +50,21 @@ jobs: gitea.woggioni.net/woggioni/rbcs:memcache gitea.woggioni.net/woggioni/rbcs:memcache-${{ steps.retrieve-version.outputs.VERSION }} target: release-memcache + - + name: Build rbcs redis Docker image + uses: docker/build-push-action@v5.3.0 + with: + builder: "multiplatform-builder" + context: "docker/build/docker" + platforms: linux/amd64,linux/arm64 + push: true + pull: true + tags: | + gitea.woggioni.net/woggioni/rbcs:latest + gitea.woggioni.net/woggioni/rbcs:${{ steps.retrieve-version.outputs.VERSION }} + gitea.woggioni.net/woggioni/rbcs:redis + gitea.woggioni.net/woggioni/rbcs:redis-${{ steps.retrieve-version.outputs.VERSION }} + target: release-redis - name: Build rbcs native Docker image uses: docker/build-push-action@v5.3.0 diff --git a/docker/Dockerfile b/docker/Dockerfile index 51087a7..19ecebb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -16,6 +16,15 @@ WORKDIR /home/luser ADD logback.xml . ENTRYPOINT ["java", "-Dlogback.configurationFile=logback.xml", "-XX:MaxRAMPercentage=70", "-XX:GCTimeRatio=24", "-XX:+UseZGC", "-XX:+ZGenerational", "-jar", "/home/luser/rbcs.jar"] +FROM base-release AS release-redis +ADD --chown=luser:luser rbcs-cli-envelope-*.jar rbcs.jar +RUN mkdir plugins +WORKDIR /home/luser/plugins +RUN --mount=type=bind,source=.,target=/build/distributions tar -xf /build/distributions/rbcs-server-redis*.tar +WORKDIR /home/luser +ADD logback.xml . +ENTRYPOINT ["java", "-Dlogback.configurationFile=logback.xml", "-XX:MaxRAMPercentage=70", "-XX:GCTimeRatio=24", "-XX:+UseZGC", "-XX:+ZGenerational", "-jar", "/home/luser/rbcs.jar"] + FROM busybox:musl AS base-native RUN mkdir -p /var/lib/rbcs /etc/rbcs RUN adduser -D -u 1000 rbcs -h /var/lib/rbcs diff --git a/rbcs-cli/build.gradle b/rbcs-cli/build.gradle index 6478273..e804bcb 100644 --- a/rbcs-cli/build.gradle +++ b/rbcs-cli/build.gradle @@ -50,6 +50,7 @@ configurations { dependencies { configureNativeImageImplementation project configureNativeImageImplementation project(':rbcs-server-memcache') + configureNativeImageImplementation project(':rbcs-server-redis') implementation catalog.jwo implementation catalog.slf4j.api @@ -62,6 +63,7 @@ dependencies { runtimeOnly catalog.logback.classic // runtimeOnly catalog.slf4j.simple nativeImage project(':rbcs-server-memcache') + nativeImage project(':rbcs-server-redis') } @@ -138,6 +140,7 @@ Provider jlinkTaskProvider = tasks.named(JlinkPlugin.JLINK_TASK_NAME, ) additionalModules = [ 'net.woggioni.rbcs.server.memcache', + 'net.woggioni.rbcs.server.redis', 'ch.qos.logback.classic', 'jdk.crypto.ec' ] diff --git a/rbcs-cli/conf/rbcs-server-redis.xml b/rbcs-cli/conf/rbcs-server-redis.xml new file mode 100644 index 0000000..be6da3c --- /dev/null +++ b/rbcs-cli/conf/rbcs-server-redis.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/rbcs-cli/src/configureNativeImage/kotlin/net/woggioni/rbcs/cli/graal/GraalNativeImageConfiguration.kt b/rbcs-cli/src/configureNativeImage/kotlin/net/woggioni/rbcs/cli/graal/GraalNativeImageConfiguration.kt index fb48c8c..fcc3343 100644 --- a/rbcs-cli/src/configureNativeImage/kotlin/net/woggioni/rbcs/cli/graal/GraalNativeImageConfiguration.kt +++ b/rbcs-cli/src/configureNativeImage/kotlin/net/woggioni/rbcs/cli/graal/GraalNativeImageConfiguration.kt @@ -27,16 +27,27 @@ import net.woggioni.rbcs.server.cache.FileSystemCacheConfiguration import net.woggioni.rbcs.server.cache.InMemoryCacheConfiguration import net.woggioni.rbcs.server.configuration.Parser import net.woggioni.rbcs.server.memcache.MemcacheCacheConfiguration +import net.woggioni.rbcs.server.redis.RedisCacheConfiguration object GraalNativeImageConfiguration { @JvmStatic fun main(vararg args : String) { - val serverURL = URI.create("file:conf/rbcs-server.xml").toURL() - val serverDoc = serverURL.openStream().use { - Xml.parseXml(serverURL, it) + let { + val serverURL = URI.create("file:conf/rbcs-server.xml").toURL() + val serverDoc = serverURL.openStream().use { + Xml.parseXml(serverURL, it) + } + Parser.parse(serverDoc) + } + + let { + val serverURL = URI.create("file:conf/rbcs-server-redis.xml").toURL() + val serverDoc = serverURL.openStream().use { + Xml.parseXml(serverURL, it) + } + Parser.parse(serverDoc) } - Parser.parse(serverDoc) val url = URI.create("file:conf/rbcs-client.xml").toURL() val clientDoc = url.openStream().use { @@ -90,6 +101,18 @@ object GraalNativeImageConfiguration { "MD5", null, 1, + ), + RedisCacheConfiguration( + listOf(RedisCacheConfiguration.Server( + HostAndPort("127.0.0.1", 6379), + 1000, + 4) + ), + Duration.ofSeconds(60), + "someCustomPrefix", + "MD5", + null, + 1, ) )