From ce5a5e951b657d60d8de1349e03dd31ae9d9a07b Mon Sep 17 00:00:00 2001
From: Jonas Natten <jonas.natten@knowit.no>
Date: Fri, 10 Nov 2023 13:42:37 +0100
Subject: [PATCH] Add support for passing `JAVA_OPTS` to docker images

This allows us to be a bit more dynamic with heapsize and such without
rebuilding/re-releasing every time we want to update, or try something
new.
---
 project/Module.scala    | 13 ++++---------
 project/imageapi.scala  |  2 +-
 project/searchapi.scala |  2 +-
 3 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/project/Module.scala b/project/Module.scala
index 050d6710d8..aae86bb618 100644
--- a/project/Module.scala
+++ b/project/Module.scala
@@ -128,25 +128,20 @@ trait Module {
     "--add-opens=java.desktop/java.awt=ALL-UNNAMED"
   )
 
-  def dockerSettings(extraJavaOpts: String*): Seq[Def.Setting[_]] = {
+  def dockerSettings(): Seq[Def.Setting[_]] = {
     Seq(
       docker := (docker dependsOn assembly).value,
       docker / dockerfile := {
         val artifact           = (assembly / assemblyOutputPath).value
         val artifactTargetPath = s"/app/${artifact.name}"
 
-        val entry = Seq(
-          "java",
-          "-Dorg.scalatra.environment=production"
-        ) ++
-          reflectiveAccessOptions ++
-          extraJavaOpts ++
-          Seq("-jar", artifactTargetPath)
+        val entry =
+          s"java -Dorg.scalatra.environment=production $$JAVA_OPTS ${reflectiveAccessOptions.mkString(" ")} -jar $artifactTargetPath"
 
         new Dockerfile {
           from("eclipse-temurin:20-jdk")
           add(artifact, artifactTargetPath)
-          entryPoint(entry: _*)
+          entryPointRaw(entry)
         }
       },
       docker / imageNames := Seq(
diff --git a/project/imageapi.scala b/project/imageapi.scala
index 612d667499..4e34bdefc1 100644
--- a/project/imageapi.scala
+++ b/project/imageapi.scala
@@ -64,7 +64,7 @@ object imageapi extends Module {
     libraryDependencies ++= dependencies
   ) ++
     commonSettings ++
-    dockerSettings("-Xmx6G") ++
+    dockerSettings() ++
     tsSettings ++
     assemblySettings()
 
diff --git a/project/searchapi.scala b/project/searchapi.scala
index be1a2a7d70..6fbd043067 100644
--- a/project/searchapi.scala
+++ b/project/searchapi.scala
@@ -55,7 +55,7 @@ object searchapi extends Module {
   ) ++
     commonSettings ++
     assemblySettings() ++
-    dockerSettings("-Xmx6G") ++
+    dockerSettings() ++
     tsSettings
 
   override lazy val plugins: Seq[sbt.Plugins] = Seq(