build.sbt (79 lines of code) (raw):

import com.typesafe.sbt.packager.docker import com.typesafe.sbt.packager.docker.DockerPlugin.autoImport.{dockerExposedPorts, dockerUsername} import com.typesafe.sbt.packager.docker.{Cmd, DockerPermissionStrategy} name := "VaultDoor" version := "1.0" lazy val `vaultdoor` = (project in file(".")).enablePlugins(PlayScala) scalaVersion := "2.12.13" scalacOptions +="-target:jvm-1.8" javacOptions ++= Seq("-source", "1.8","-target","1.8") libraryDependencies ++= Seq( guice , ehcache, ws , specs2 % Test ) unmanagedResourceDirectories in Test += { baseDirectory ( _ /"target/web/public/test" ).value } unmanagedBase := baseDirectory.value / "lib" val akkaVersion = "2.5.26" val circeVersion = "0.13.0" val slf4jVersion = "1.7.25" val elastic4sVersion = "6.5.1" libraryDependencies ++= Seq( "io.circe" %% "circe-core" % circeVersion, "io.circe" %% "circe-generic" % circeVersion, "io.circe" %% "circe-parser" % circeVersion, "com.dripower" %% "play-circe" % "2711.0", "org.slf4j" % "slf4j-api" % slf4jVersion, "commons-codec" % "commons-codec" % "1.13", "commons-io" % "commons-io" % "2.7", "ch.qos.logback" % "logback-classic" % "1.2.3", "com.github.scopt" %% "scopt" % "3.7.1", "io.circe" %% "circe-yaml" % "0.13.0", "org.mongodb.scala" %% "mongo-scala-driver" % "2.6.0", "ai.snips" %% "play-mongo-bson" % "0.5.1", "com.sksamuel.elastic4s" %% "elastic4s-http" % elastic4sVersion, "com.sksamuel.elastic4s" %% "elastic4s-circe" % elastic4sVersion, "com.sksamuel.elastic4s" %% "elastic4s-http-streams" % elastic4sVersion, "com.sksamuel.elastic4s" %% "elastic4s-testkit" % elastic4sVersion % "test", "com.sksamuel.elastic4s" %% "elastic4s-embedded" % elastic4sVersion % "test", "com.github.scredis" %% "scredis" % "2.3.3", "org.specs2" %% "specs2-core" % "4.5.1" % Test, "org.specs2" %% "specs2-mock" % "4.5.1" % Test, "org.mockito" % "mockito-core" % "2.28.2" % Test, "com.typesafe.akka" %% "akka-actor" % akkaVersion, "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, "com.typesafe.akka" %% "akka-stream" % akkaVersion, "com.typesafe.akka" %% "akka-protobuf" % akkaVersion, "com.typesafe.akka" %% "akka-testkit" % akkaVersion % Test, ) //Sentry libraryDependencies += "io.sentry" % "sentry-logback" % "6.3.1" //authentication libraryDependencies ++= Seq( "com.nimbusds" % "nimbus-jose-jwt" % "9.37.2", ) //snyk updates libraryDependencies ++= Seq( "com.fasterxml.jackson.core" % "jackson-databind" % "2.9.10.8", "com.google.guava" % "guava" % "30.0-jre", "org.apache.httpcomponents" % "httpclient" % "4.5.13" ) enablePlugins(RpmPlugin, SystemdPlugin) rpmVendor := "Andy Gallagher <andy.gallagher@theguardian.com>" packageName in Rpm := "vaultdoor" version in Rpm := "1.0" rpmRelease := sys.props.getOrElse("build.number","DEV") rpmUrl := Some("https://github.com/fredex42/vaultdoor") rpmLicense := Some("GPLv2") enablePlugins(DockerPlugin,AshScriptPlugin) version := sys.props.getOrElse("build.number","DEV") dockerPermissionStrategy := DockerPermissionStrategy.Run daemonUserUid in Docker := None daemonUser in Docker := "daemon" dockerExposedPorts := Seq(9000) dockerUsername := sys.props.get("docker.username") dockerRepository := Some("guardianmultimedia") packageName in Docker := "guardianmultimedia/vaultdoor" packageName := "vaultdoor" dockerBaseImage := "openjdk:8-jdk-alpine" dockerAlias := docker.DockerAlias(None,Some("guardianmultimedia"),"vaultdoor",Some(sys.props.getOrElse("build.number","DEV"))) dockerCommands ++= Seq( Cmd("USER","root"), //fix the permissions in the built docker image Cmd("RUN", "chown daemon /opt/docker"), Cmd("RUN", "chmod u+w /opt/docker"), Cmd("RUN", "chmod -R a+x /opt/docker"), Cmd("USER", "daemon") )