备注:
  环境准备 : docker , gradle(使用wrapper,或者全局安装),测试环境使用mac
1. gradle 安装
brew install gradle 
 
2. docker
// 安装
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
// 加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://099430a4.m.daocloud.io
3. gradle 项目结构
gradle wrapper

├── README.md
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── lib
│ └── commons-codec.jar
├── moviesservice
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── dalong
│ │ └── moviesservice
│ │ └── Movies.java
│ └── resources
├── settings.gradle
├── src
│ ├── main
│ │ ├── docker
│ │ │ └── Dockerfile
│ │ ├── java
│ │ │ └── com
│ │ │ └── dalong
│ │ │ └── Application.java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── userservice
├── build.gradle
└── src
└── main
├── java
│ └── com
│ └── dalong
│ └── userservice
│ └── User.java
└── resources
 
 
4. 代码说明
多项目主要是 settings.gradle,具体代码如下:

1. settings.gradle

rootProject.name = 'parent'
include 'moviesservice'
include 'userservice' 2. build.gradle group 'com.gradleapp'
version '1.0-SNAPSHOT'
buildscript {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
dependencies {
classpath('se.transmode.gradle:gradle-docker:1.2')
}
}
apply plugin: 'java'
apply plugin: 'application'
apply plugin: "docker"
sourceCompatibility = 1.8
mainClassName = 'com.dalong.Application'
repositories {
mavenCentral()
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
// 依赖引用
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile project(":userservice")
compile project(":moviesservice")
compile files("lib/commons-codec.jar") }
// docker build task
task buildDocker(type:Docker,dependsOn:build){
push = false
applicationName ="gradlemultiproject"
project.group="dockerimagehost/mydemo"
dockerfile = file("${projectDir}/src/main/docker/Dockerfile")
doFirst {
copy {
from distZip
into stageDir
}
}
} 3. 子项目gradle 配置,比较简单 group 'com.gradleapp'
version '1.0-SNAPSHOT' apply plugin: 'java' sourceCompatibility = 1.8 repositories { }
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
4. dockerfile
FROM openjdk:8-jre-alpine
WORKDIR /appdemo/
COPY parent-1.0-SNAPSHOT.zip /appdemo
RUN unzip /appdemo/parent-1.0-SNAPSHOT.zip && rm -rf parent-1.0-SNAPSHOT.zip
ENTRYPOINT [ "./parent-1.0-SNAPSHOT/bin/parent"]
 
5. 构建
gradle buildDocker   or  ./gradlew buildDocker

> Task :buildDocker
Sending build context to Docker daemon 224.8kB
Step 1/5 : FROM openjdk:8-jre-alpine
---> b1bd879ca9b3
Step 2/5 : WORKDIR /appdemo/
---> Using cache
---> 53e534f7f64f
Step 3/5 : COPY parent-1.0-SNAPSHOT.zip /appdemo
---> f07ca2806459
Step 4/5 : RUN unzip /appdemo/parent-1.0-SNAPSHOT.zip && rm -rf parent-1.0-SNAPSHOT.zip
---> Running in f42179c4ac39
Archive: /appdemo/parent-1.0-SNAPSHOT.zip
creating: parent-1.0-SNAPSHOT/
creating: parent-1.0-SNAPSHOT/lib/
inflating: parent-1.0-SNAPSHOT/lib/parent-1.0-SNAPSHOT.jar
inflating: parent-1.0-SNAPSHOT/lib/commons-codec.jar
inflating: parent-1.0-SNAPSHOT/lib/userservice-1.0-SNAPSHOT.jar
inflating: parent-1.0-SNAPSHOT/lib/moviesservice-1.0-SNAPSHOT.jar
creating: parent-1.0-SNAPSHOT/bin/
inflating: parent-1.0-SNAPSHOT/bin/parent.bat
inflating: parent-1.0-SNAPSHOT/bin/parent
Removing intermediate container f42179c4ac39
---> e322da1a4e8a
Step 5/5 : ENTRYPOINT [ "./parent-1.0-SNAPSHOT/bin/parent"]
---> Running in 8c279ec90d6f
Removing intermediate container 8c279ec90d6f
---> 39e705358ef1
Successfully built 39e705358ef1
Successfully tagged dockerimagehost/mydemo/gradlemultiproject:1.0-SNAPSHOT
 
6.  参考资料
https://docs.gradle.org/4.5/userguide/intro_multi_project_builds.html
https://github.com/Transmode/gradle-docker
https://github.com/rongfengliang/gradlemultiproject.git
 
 
 
 
 

gradle multiproject && docker build的更多相关文章

  1. 【云计算】docker build如何支持参数化构建?

    docker 1.9.0版本之后,已经支持docker build参数化构建. docker 版本更新记录: github讨论: 参开资料: https://github.com/docker/doc ...

  2. docker: "build" requires 1 argument. See 'docker build --help'.

    http://bbs.csdn.net/topics/391040030 docker build  --tag="ouruser/sinatra:v3" -<Dockerf ...

  3. Docker build Dockerfile 构建镜像 - 二

    Dockerfile 制作镜像 https://hub.docker.com/ 搜索需要镜像: https://hub.docker.com/_/centos/ 官方示例: centos:6 1.这里 ...

  4. Jenkins Docker安装及Docker build step插件部署配置

    生产部署环境:A:192.168.1.2 B:192.168.1.3  两台服务器系统均是Centos 7.3 , Docker版本都1.12.6 Jenkins安装操作步骤: 1.在A服务器上使用命 ...

  5. 25.week4 docker build 也就是创建自己的image 上传image到dockerhub 从dockerhub下载images

    dado可以写你自己的名字 这个命令就会根据目录下的Dockerfile(固定用和这个名字)文件里面的内容 去下载并创建运行命令一步一步地 Setting up libxfixes3:amd64 (: ...

  6. docker build 指定dockerfile

    1. Dockerfile文件使用 docker build命令会根据Dockerfile文件及上下文构建新Docker镜像.构建上下文是指Dockerfile所在的本地路径或一个URL(Git仓库地 ...

  7. "docker build" requires exactly 1 argument(s).

    Docker 是怎么样的东西,这里就不说了,这里说说dockerfile创建容器时遇到的问题. 首先我想达到的目的很简单,就是用dockerfile去创建容器,步骤如下: 创建并编辑dockerfil ...

  8. 使用dockerfile文件创建镜像时docker build没有反应

    问题: 先 docker pull centos:7 拉取了一个官方的基础镜像,为后续创建jdk8镜像做准备,在创建如下的dockerfile文件 执行docker build -t jdk_8u19 ...

  9. docker build

    nginx Docfile ----------------------- FROM centos   MAINTAINER daniel   RUN yum install -y wget RUN ...

随机推荐

  1. js模糊查询

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Java集合详解3:Iterator,fail-fast机制与比较器

    Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https:/ ...

  3. BZOJ 1045 [HAOI2008]糖果传递 ★(环形等分:中位数)

    题意 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. 思路 假设平均数是x,且a1给an了k个(k<0说明是an给a1了-k个),那么总代价就 ...

  4. Spring源码解析-IOC容器的实现-ApplicationContext

    上面我们已经知道了IOC的建立的基本步骤了,我们就可以用编码的方式和IOC容器进行建立过程了.其实Spring已经为我们提供了很多实现,想必上面的简单扩展,如XMLBeanFacroty等.我们一般是 ...

  5. LeetCode OJ:Search in Rotated Sorted Array II(翻转排序数组的查找)

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  6. codis3.2安装配置中的一些问题

    1.参考文档与参考资料问题 安装codis集群之前,我先在网上找资料,然后又到github的项目官方地址找,不得不说,相关的资料不好找,而且找到之后有些东西说的也不是很清楚.由于codis版本迭代的问 ...

  7. resizable可调整尺寸组件

    Resizable 可调整尺寸不依赖于其他组件 1.用法:通过标记创建可调整尺寸(resizable)对象 <div class="easyui-resizable" sty ...

  8. Flask项目中的蓝图简介及使用方式

    Blueprint概念 简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以 ...

  9. 【PL/SQL编程】数据类型说明

    1. 数值类型 数值类型主要包括NUMBER.PLS_INTEGER.和BINARY_INTEGER 3种基本类型.NUMBER可以用来存储整数或浮点数,PLS_INTEGER和BINARY_INTE ...

  10. 【跟着stackoverflow学Pandas】“Large data” work flows using pandas-pandas大数据处理流程

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...