I am trying to prove a web application for a game and I am using sbt-docker. I get a gollowing error when I execute sbt docker:
error: reference to DockerPlugin is ambiguous; it is imported twice in the same scope by import _root_.sbtdocker.DockerPlugin and import _root_.com.typesafe.sbt.packager.docker.DockerPlugin enablePlugins(DockerPlugin) ^ [error] Type error in expression Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? q
I get the above error and my build.sbt file looks like this:
enablePlugins(DockerPlugin) lazy val root = (project in file(".")).enablePlugins(PlayScala) scalaVersion := "2.11.6" libraryDependencies ++= Seq( jdbc, cache, ws, specs2 % Test ) resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases" // Play provides two styles of routers, one expects its actions to be injected, the // other, legacy style, accesses its actions statically. routesGenerator := InjectedRoutesGenerator // Make docker depend on the package task, which generates a jar file of the application code docker <<= docker.dependsOn(sbt.Keys.`package`.in(Compile, packageBin)) // Define a Dockerfile dockerfile in docker := { val jarFile = artifactPath.in(Compile, packageBin).value val classpath = (managedClasspath in Compile).value val mainclass = mainClass.in(Compile, packageBin).value.getOrElse(sys.error("Expected exactly one main class")) val jarTarget = s"/app/${jarFile.getName}" // Make a colon separated classpath with the JAR file val classpathString = classpath.files.map("/app/" + _.getName).mkString(":") + ":" + jarTarget new Dockerfile { // Base image from("java") // Add all files on the classpath add(classpath.files, "/app/") // Add the JAR file add(jarFile, jarTarget) // On launch run Java with the classpath and the main class entryPoint("java", "-cp", classpathString, mainclass) } }
My suspicion is that sbt-native-packager is conflicting with sbt-docker. But I do not import sbt-native-packager anywhere.
scala docker build sbt sbt-docker
pphanireddy
source share