[英]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.