5

マルチプロジェクト SBT/Play2 アプリがあり、メイン プロジェクト (他のプロジェクトを集約する) の Docker イメージを公開する必要があります。

問題はsbt-native-packager、ローカル リポジトリですべての PLAY プロジェクトのイメージを公開することです。ルート イメージは問題なく動作しますが、他に公開すべきでないイメージが 2 つあります。

plugins.sbt に追加したもの

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0-RC1")

これが私の build.sbt です

import Dependencies.Library._
import PlayKeys._
import com.typesafe.sbt.packager.docker._

lazy val root = (project in file("."))
  .enablePlugins(PlayScala)
  .enablePlugins(DockerPlugin)
  .settings(
    packageName in Docker := "docking-station",
    version in Docker := "latest",
    NativePackagerKeys.dockerBaseImage := "dockerfile/java:oracle-java8",
    NativePackagerKeys.dockerExposedPorts := Seq(9000, 9443),
    NativePackagerKeys.dockerExposedVolumes := Seq("/opt/docker/logs"),
  )
  .dependsOn(module1).aggregate(module1)
  .dependsOn(module2).aggregate(module2)
  .dependsOn(core).aggregate(core)

lazy val module1 = (project in file("modules/1"))
  .enablePlugins(PlayScala)
  .dependsOn(core)
  .dependsOn(entities)

lazy val module2 = (project in file("modules/2"))
  .enablePlugins(PlayScala)
  .dependsOn(core)

lazy val core = (project in file("modules/core"))

そして、これは私が得るものです

sbt docker:publishLocal

REPOSITORY                 TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docking-station            latest              0d81792dd1ff        2 seconds ago       873.3 MB
module1                 0.0.1               6d73e3623d2c        3 seconds ago       810.3 MB
module2                0.0.1               c847913663c2        3 seconds ago       809.9 MB

sbt-native-packagerこれらのサブプロジェクトのイメージを公開しないように構成する方法を知っていますか?

ご協力いただきありがとうございます :)

4

2 に答える 2

8

私もこの問題に遭遇しました。これが私のために働いた解決策です。sbt のドキュメントを確認すると、タスクごとに集計の設定があることがわかります。したがって、docker タスクの集計を false に設定するだけです。このような:

lazy val root = (project in file("."))
  .enablePlugins(PlayScala)
  .enablePlugins(DockerPlugin)
  .settings(
    packageName in Docker := "docking-station",
    version in Docker := "latest",
      NativePackagerKeys.dockerBaseImage := "dockerfile/java:oracle-java8",
      NativePackagerKeys.dockerExposedPorts := Seq(9000, 9443),
      NativePackagerKeys.dockerExposedVolumes := Seq("/opt/docker/logs"),
    )
    .dependsOn(module1).aggregate(module1)
    .dependsOn(module2).aggregate(module2)
    .dependsOn(core).aggregate(core)
    .settings(
      aggregate in Docker := false
    )
于 2015-07-09T20:08:23.613 に答える