2017-02-15 9 views
0

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

В моем файле 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 

Сгенерированный файл докер в целевой/грузчиком/Dockerfile является:

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

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

Как исправить эту проблему?

настройки
+0

Btw, будьте осторожны с Oracle java в Docker: http://blog.takipi.com/running-java-on-docker-youre-breaking-the-law/ –

ответ

1

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