Как использовать задачу докера с мультипроектом sbt

У меня есть мультипроект SBT, в котором у меня есть 2 разных игровых приложения. Я хочу создать 2 выхода докера, а не только 1.

В моем файле build.sbt у меня есть некоторые настройки докера, но когда я запускаю задачу докера, она не использует ни один из этих параметров, поскольку в файле 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:

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

Как видите, отсутствует то, что я добавил в свой build.sbt. Он должен иметь линии для сопровождающего и открытые порты.

Как я могу решить эту проблему?


person Blankman    schedule 15.02.2017    source источник
comment
Кстати, будьте осторожны с Oracle java в Docker: blog .takipi.com/running-java-on-docker-youre-breaking-the-law   -  person Mon Calamari    schedule 16.02.2017


Ответы (1)


Настройки Docker должны быть установлены для каждого подпроекта:

lazy val server = Project("server")
  .enablePlugins(DockerPlugin)
  .settings(dockerBaseImage := "openjdk:8-jdk")
  .settings(dockerRepository := Some("registry.gitlab.com"))
  .settings(dockerExposedPorts := Seq(8080))

Определив проект, как указано выше, вы можете опубликовать образ докера с помощью следующей команды:

sbt server/docker:publishLocal

person Mon Calamari    schedule 15.02.2017