如何用Gradle创建Docker镜像

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文讲的是如何用Gradle创建Docker镜像,【编者的话】在本篇博客中,作者展示了如何用Gradle task创建Docker镜像。Gradle目前已有一些Docker插件。作者谈论的这个插件是用来为 Mesos Elasticsearch创建scheduler镜像的。
本文讲的是如何用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镜像
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
2天前
|
存储 Ubuntu Linux
[Docker] 镜像讲解
[Docker] 镜像讲解
|
4天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
16天前
|
应用服务中间件 Docker 容器
docker 镜像常用命令
docker 镜像常用命令
37 0
|
16天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0
|
24天前
|
存储 Kubernetes API
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
Docker拉取镜像或者kubectl出现的这个解决方案x509: certificate signed by unknown authority
61 2
|
25天前
|
Linux Docker 容器
Linux彻底卸载Docker包括运行拉取的镜像
Linux彻底卸载Docker包括运行拉取的镜像
24 1
|
29天前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
372 1
|
29天前
|
Docker 容器
docker删除镜像
docker删除镜像
51 0
|
1月前
|
网络安全 Docker 容器
docker 拷贝本地镜像
【2月更文挑战第27天】