如何让sbt-native-packager结合两层docker图像

我使用sbt-native-packager从Scala应用程序构buildDocker镜像。 在结果图像中有两层相似的尺寸:

docker history --no-trunc docker.example.com/scala-app ... b49580a36beb6c7cd020ad006954f245aebf82041d3e79eff1517fdbf58ae6cd About an hour ago chown -R daemon:daemon . 125.2 MB f12b3a929ded4161044642e117114b57889613d77186a0a727862ab5a44af5e3 About an hour ago /bin/sh -c #(nop) ADD dir:678c325d24285ae96f682c6abc3d71cc8a17ee6267a2db4fff232fcaaa5dec13 in /opt 125.2 MB ... 

我假设这两层只在所有权上有所不同(chown -R守护进程:守护进程)。 问题是,他们都在下拉过程中被下载。 有没有办法将这两个图层合并为一个图像大小?

我设法通过覆盖dockerCommands来改变这个行为:

  lazy val root = myProject("scala-app", ".") .enablePlugins(JavaAppPackaging, DockerPlugin).settings(dockerSettings: _*) .settings(dockerCommands in Docker := dockerCommands.value.filterNot { // remove chown command because it creates redundant image layer case ExecCmd("RUN", args @ _*) => args.contains("chown") // don't filter the rest case cmd => false }) 

DockerPlugin文档中介绍了该解决scheme,url为http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#remove-commands