如何使用docker任务与sbt多项目

我有一个SBT多项目,我有2个不同的游戏应用程序。 我想创build2个docker输出不只是1。

在我的build.sbt文件中,我有一些docker设置,但是当我运行docker任务时,由于DockerFile没有configuration任何东西,所以没有使用这些设置。

我的build.sbt看起来像:

lazy val project1 = (project in file("project1")). .. .enablePlugins(...., DockerPlugin) lazy val project2 = (project in file("project2")). .. .enablePlugins(...., DockerPlugin) // docker maintainer in Docker := "mr. docker" dockerExposedPorts := Seq(9000) dockerBaseImage := "java:latest" 

我首先进入我的具体项目来执行任务:

 project project2 docker:stage 

目标/ docker / Dockerfile中生成的docker文件是:

 FROM java:latest WORKDIR /opt/docker ADD opt /opt RUN ["chown", "-R", "daemon:daemon", "."] USER daemon ENTRYPOINT ["bin/project1"] CMD [] 

正如你所看到的,它缺less我在build.sbt中放置的东西。 它应该有维护者和暴露端口的线路。

我该如何解决这个问题?

Docker设置必须为每个子项目设置:

 lazy val server = Project("server") .enablePlugins(DockerPlugin) .settings(dockerBaseImage := "openjdk:8-jdk") .settings(dockerRepository := Some("registry.gitlab.com")) .settings(dockerExposedPorts := Seq(8080)) 

有上面定义的项目,您可以使用以下命令发布docker映像:

sbt server/docker:publishLocal