2017-02-15 29 views
0

我有一個SBT多項目,其中有2個不同的應用程序。 我要創建2只碼頭工人產出不只是1如何在sbt多項目中使用docker任務

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

順便說一句,小心Docker中的Oracle java:http://blog.takipi.com/running-java-on-docker-youre-breaking-the-law/ –

回答

1

泊塢窗設置已到每分項目進行設置:

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

相關問題