From dbc5b708e005509a655c3bda15d2cb090b6cfa1f Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 24 May 2016 00:25:26 -0700 Subject: Dockerize --- mavigator-server/build.sbt | 50 ++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 26 deletions(-) (limited to 'mavigator-server') diff --git a/mavigator-server/build.sbt b/mavigator-server/build.sbt index 10b59d0..d430750 100644 --- a/mavigator-server/build.sbt +++ b/mavigator-server/build.sbt @@ -21,36 +21,34 @@ cancelable in Global := true /* * Deployment configuration */ -enablePlugins(UniversalPlugin, DebianPlugin, DockerPlugin) -enablePlugins(JavaServerAppPackaging) +enablePlugins(DockerPlugin) +val filter = ScopeFilter( + inAnyProject, + inConfigurations(Compile) +) -name in Universal := "mavigator" -packageName in Universal := "mavigator" -executableScriptName in Universal := "mavigator" - -name in Linux := (name in Universal).value -packageName in Linux := (packageName in Universal).value -executableScriptName in Linux := (executableScriptName in Universal).value +dockerfile in docker := { + val mainclass = (mainClass in Compile in packageBin).value.getOrElse(sys.error("Expected exactly one main class")) -maintainer in Linux := "Jakob Odersky " -packageSummary in Linux := "Virtual cockpit for drones." -packageDescription in Linux := "Compatible with devices using the MAVLink protocol." + val jarFiles: List[File] = packageBin.all(filter).value.toList ::: + (fullClasspath in Compile).value.files.toList -version in Debian := version.value -debianPackageDependencies in Debian ++= Seq( - "java8-runtime-headless", - "bash (>= 2.05a-11)" -) + val cp = jarFiles.map{ file => + s"/opt/mavigator/lib/${file.getName}" + }.mkString(":") -import com.typesafe.sbt.packager.archetypes.ServerLoader -serverLoading in Debian := ServerLoader.Systemd + new Dockerfile { + from("java:8") + add(jarFiles, "/opt/mavigator/lib/") + expose(8080) + entryPoint("java", "-cp", cp, mainclass) + } +} +buildOptions in docker := BuildOptions( + pullBaseImage = BuildOptions.Pull.Always, + removeIntermediateContainers = BuildOptions.Remove.Always +) -name in Docker := "mavigator" -packageName in Docker := "mavigator" -executableScriptName := "mavigator" -maintainer in Docker := "Jakob Odersky " - -dockerBaseImage := "java:8" -dockerExposedPorts += 8080 +imageName in docker := ImageName(s"jodersky/mavigator:${version.value}") -- cgit v1.2.3