我遇到了标题中描述的问题,即当我运行时sbt
没有生成bin
目录(ENTRYPOINT
脚本指向的目录) docker:stage
或docker:publishLocal
。
我之前从未见过这种行为所以我对如何继续这一点感到有些迷茫,但我还要提到我已经以不同的方式建立了这个项目。
项目在其根目录下设置如下:
- infrastructure
- app
- build.sbt
- target/...
- another-project
- project
- BuildDefinition.scala
- plugins.sbt
- build.properties
- build.sbt
在我的根目录BuildDefinition.scala
中,我已经设置了所有项目定义,包括不会暂停我所需的app
项目。
在根目录上的build.sbt
中,我只有:
sourcesInBase in ThisBuild := false
name := "fantasy-factory"
在app
目录的build.sbt中,我只有与Docker相关的东西:
dockerBaseImage in Docker := "java:8-jre"
mainClass := Some("akka.Main")
javaOptions in Universal ++= Seq("com.nv.microservice.as.cluster.ClusterEntryPoint")
version in Docker := "latest"
packageName in Docker := "basic-distributed-microservice"
在登台时生成 的内容几乎是我需要的一切...除了具有入口点脚本的bin
目录之外的所有内容。所以我确实在app
target
目录下面看到了:
- target
- docker
- stage
- opt
- docker
- conf
- lib
- (I would have expected to see bin here)
- Dockerfile
- Dockerfile
这对我来说非常令人沮丧;任何建议表示赞赏。
答案 0 :(得分:3)
我有一个类似的问题,我解决了将in (Compile)
添加到mainClass键,如下所示。在build.sbt
文件中:
lazy val root = (project in file("."))
.enablePlugins(JavaServerAppPackaging)
.enablePlugins(DockerPlugin)
.settings(
name := "my-project",
mainClass in (Compile) := Some("MyFQNMainClass"),
version := "1.0.0.BUILD",
dockerBaseImage := "azul/zulu-openjdk:8",
dockerUpdateLatest := true,
dockerExposedPorts := Seq(8080),
dockerRepository := Some("myrepo")
)
scalaVersion := "2.11.8"
sbtVersion := "0.13.9"
...
我还有plugins.sbt
文件(在project
文件夹下):
logLevel := Level.Warn
dependencyOverrides += "org.scala-sbt" % "sbt" % "0.13.9"
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-s3" % "0.8")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.4")
addSbtPlugin("io.spray" % "sbt-revolver" % "0.8.0")
build.properties
与plugins.sbt
位于同一文件夹中:
sbt.version=0.13.9
希望它有所帮助。