在暂存或发布docker +其他问题时不生成bin目录

时间:2016-03-27 19:50:18

标签: scala docker sbt docker-machine

我遇到了标题中描述的问题,即当我运行时sbt没有生成bin目录(ENTRYPOINT脚本指向的目录) docker:stagedocker: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

这对我来说非常令人沮丧;任何建议表示赞赏。

1 个答案:

答案 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.propertiesplugins.sbt位于同一文件夹中:

sbt.version=0.13.9

希望它有所帮助。