gpt4 book ai didi

scala - 如何使sbt-native-packager结合两层docker镜像

转载 作者:行者123 更新时间:2023-12-02 19:42:20 24 4
gpt4 key购买 nike

我正在使用sbt-native-packager从Scala应用程序构建docker镜像。
结果图像中有两层大小相似的图层:

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 daemon:daemon)。问题是在拉动过程中都下载了它们。
为了图像大小,是否有两种方法可以将这两层组合成一层?

最佳答案

我设法通过覆盖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
})

该解决方案在 http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#remove-commands的DockerPlugin文档中进行了描述。

关于scala - 如何使sbt-native-packager结合两层docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32866190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com