aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2016-05-24 00:25:26 -0700
committerJakob Odersky <jakob@odersky.com>2016-05-24 00:25:26 -0700
commitdbc5b708e005509a655c3bda15d2cb090b6cfa1f (patch)
treec8281facfbb3e77c830f087fbca959ad30bd0f23
parenta0966d3e4e6e1681147993c335de662e47a7e793 (diff)
downloadmavigator-dbc5b708e005509a655c3bda15d2cb090b6cfa1f.tar.gz
mavigator-dbc5b708e005509a655c3bda15d2cb090b6cfa1f.tar.bz2
mavigator-dbc5b708e005509a655c3bda15d2cb090b6cfa1f.zip
Dockerize
-rw-r--r--mavigator-server/build.sbt50
-rw-r--r--project/MavigatorBuild.scala15
-rw-r--r--project/plugins.sbt2
3 files changed, 31 insertions, 36 deletions
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 <jakob@odersky.com>"
-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 <jakob@odersky.com>"
-
-dockerBaseImage := "java:8"
-dockerExposedPorts += 8080
+imageName in docker := ImageName(s"jodersky/mavigator:${version.value}")
diff --git a/project/MavigatorBuild.scala b/project/MavigatorBuild.scala
index f6c0884..e634d03 100644
--- a/project/MavigatorBuild.scala
+++ b/project/MavigatorBuild.scala
@@ -29,22 +29,19 @@ object MavigatorBuild extends Build {
// main akka http server project
lazy val server = Project(
id = "mavigator-server",
- base = file("mavigator-server"),
- dependencies = Seq(bindings, uav)
- )
+ base = file("mavigator-server")
+ ).dependsOn(bindings, uav)
// communication backend
lazy val uav = Project(
id = "mavigator-uav",
- base = file("mavigator-uav"),
- dependencies = Seq(bindings)
- )
+ base = file("mavigator-uav")
+ ).dependsOn(bindings)
// main cockpit front-end
lazy val cockpit = Project(
id = "mavigator-cockpit",
- base = file("mavigator-cockpit"),
- dependencies = Seq(bindings)
- )
+ base = file("mavigator-cockpit")
+ ).dependsOn(bindings)
}
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 611b313..c358264 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -31,4 +31,4 @@ addSbtPlugin("com.github.jodersky" % "sbt-mavlink" % "0.7.0")
// generate documentation for all projects
//addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.3.3")
-addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.0-RC3")
+addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.4.0")