如何用Gradle创建Docker镜像

本文讲的是如何用Gradle创建Docker镜像 【编者的话】在本篇博客中,作者展示了如何用Gradle task创建Docker镜像。Gradle目前已有一些Docker插件。作者谈论的这个插件是用来为  Mesos Elasticsearch 创建scheduler镜像的。这个插件通用性非常强,因为它基本上为Gradle提供了Docker CLI的所有命令。

Mesos Elasticsearch中使用的Docker镜像

在Mesos Elasticsearch中我们创建了两个Docker镜像。第一个镜像是 mesos/elasticsearch-scheduler ,这个镜像包含Elasticsearch scheduler的可执行jar 文件。用Marathon创建镜像,可以部署该文件。第二个镜像是 mesos/elasticsearch-cloud-mesos ,它包含了elasticsearch和cloud-mesos插件,用于scheduler调度的容器。我将在本篇博客中展示如何用Gradle创建这些容器。了解更多Mesos Elasticsearch的内容,请看  Mesos Elasticsearch Github page 。这个项目由 Cisco Cloud Services 赞助。

启用Gradle中的Docker插件

现在我们来讲下Gradle。 在build.gradle首行添加下述命令,启用Docker中的 bmuschko 插件。
apply plugin: `com.bmuschko.docker-remote-api`

然后还要添加Gradle下载插件的来源库。
buildscript {
repositories {
   jcenter()
  }
  dependencies {
    classpath 'com.bmuschko:gradle-docker-plugin:2.2'
  }
} 


Docker Gradle tasks

下面我来解释如何创建mesos/elasticsearch-scheduler镜像。请看scheduler/build.gradle的部分命令。我删除了dependency和buildscript的定义,因为它们与此无关。
jar {
    baseName = "elasticsearch-mesos-scheduler"
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest { attributes 'Main-Class': 'org.apache.mesos.elasticsearch.scheduler.ElasticsearchScheduler' }
}

task copyJar(type: Copy) {
    dependsOn   'jar'
    from        "build/libs/elasticsearch-mesos-scheduler-${project.version}.jar"
    into        'build/docker'
    rename { String fileName ->
        fileName.replace("-${project.version}", "")
    }
}

task buildDockerImage(type: DockerBuildImage) {
    dependsOn   copyJar
    if (System.env.DOCKER_HOST) {
        url = "$System.env.DOCKER_HOST".replace("tcp","https")
        if (System.env.DOCKER_CERT_PATH) {
            certPath = new File(System.env.DOCKER_CERT_PATH)

        }
    }
    else {
        url = 'unix:///var/run/docker.sock'
    }
    inputDir = file('.')
    tag = 'mesos/elasticsearch-scheduler'
}

build.dependsOn buildDockerImage
build.dependsOn copyJar

这里涉及到三个task。第一个,jar,创建了包括dependency的可执行scheduler jar文件。在创建Docker镜像之前,我们需要把该jar文件复制到build/docker文件夹中。复制要靠第二个task——copy来完成。因为版本剥离(stripped)的关系,Dockerfile中的CMD一直都是java -jar elasticsearch-mesos-scheduler.jar。第三个task,运行docker。这里有DockerBuildImage类型,有来自第二个copy task的dependency,设置inputDir,链接到DOCKER_HOST或者使用套接字socket进行链接。

你也看到了,用Gradle创建Docker镜像相当直接明了。了解更多关于其他Docker task的信息,请看 Docker Gradle task types

原文链接:How to build Docker images with Gradle (翻译:马远征 校对:李颖杰)

原文发布时间为:2015-06-16
本文作者:夕口夕 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:如何用Gradle创建Docker镜像
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/224847

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。