gpt4 book ai didi

playframework - 不要为每个 SBT 子项目发布 docker 镜像

转载 作者:IT老高 更新时间:2023-10-28 21:43:49 24 4
gpt4 key购买 nike

我有一个多项目 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 不为这些子项目发布图片吗?

感谢您的帮助:)

最佳答案

我也遇到了这个问题,这是对我有用的解决方案。如果您查看 sbt documentation您可以看到每个任务都有一个聚合设置。因此,您只需将 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
)

关于playframework - 不要为每个 SBT 子项目发布 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28948964/

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