繁体   English   中英

如何在SBT Multi项目中使用Docker任务

[英]How to use docker task with a sbt multi project

我有一个SBT多项目,其中有2种不同的播放应用程序。 我想创建2个docker输出而不只是1。

在我的build.sbt文件中,我有一些docker设置,但是当我运行docker任务时,它不使用任何这些设置,因为DockerFile没有我配置的任何东西。

我的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

在target / docker / Dockerfile中生成的docker文件为:

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

如您所见,它缺少我在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM