使用gradle构建docker play应用程序

时间:2016-04-05 09:41:07

标签: gradle playframework docker

我正在尝试使用gradle构建一个包含播放应用程序的docker容器,而我在gradle配置和运行构建的方式上遇到了问题。问题是为了“集装箱化”。 gradle使用play插件构建的播放应用程序,我需要从作为结果创建的文件夹中构建docker容器(使用 com.palantir.docker:0.5.2 插件)执行 playBinary 任务。

我尝试通过添加如下所示的新任务来复制上述任务创建的文件夹:

task copyDockerDependencies(type: Copy, dependsOn: build){
    from 'build/stage/playBinary'
    into 'build/docker'
}

但是当我执行gradle clean playBinary docker任务时,它失败了,因为:

Skipping task ':copyDockerDependencies' as it has no source files.

我知道这是因为在配置项目时文件夹构建不存在,所以我想知道有没有办法在执行时执行此检查以便文件夹和那些文件存在,docker build任务能够找到它们吗?

我尝试在我的复制任务中使用doLast,但这也不起作用。任何帮助将不胜感激。 干杯

2 个答案:

答案 0 :(得分:0)

万一有人对此感兴趣,我设法使用这样的执行任务:

task copyDockerFiles(type: Exec){
    workingDir '.'
    commandLine '/bin/cp', '-r', "${origin}", "${destination}"
}

虽然我并不特别喜欢将bash脚本添加到gradle构建中的想法。我不知道这是实现这一目标的正确方法,但它确实有效。 干杯

答案 1 :(得分:0)

palantir docker gradle插件从您依赖的任何任务中复制任务输出。因此,根据'dist'任务,将输出(包括播放二进制文件)复制到docker构建上下文。

请参阅:https://github.com/palantir/gradle-docker/issues/42