如何在 sbt 多项目中使用 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 设置必须按照 sub-project:
进行设置
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
我有一个 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 设置必须按照 sub-project:
进行设置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