在java web项目中,本地开发经常会需要在本地使用docker启动数据库等之类的服务。gradle提供了一个插件,允许通过gradle task启动docker的容器。在这里我们介绍的一个gralde插件com.avast.gradle.docker-compose

简单使用

引入插件

plugins {
id "com.avast.gradle.docker-compose" version "0.16.11"
}

定义task以及config

比如在我们项目的根目录下面,我们建立docker-compose.yml文件

version: '3.1'

services:
postgres:
image: postgres
restart: always
container_name: spring-security-postgresql
ports:
- "15432:5432"
environment:
POSTGRES_DB: learn_gradle
POSTGRES_USER: user
POSTGRES_PASSWORD: password
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- postgres-data:/var/lib/postgresql/data/pgdata
volumes:
postgres-data:

然后在build.gradle文件里面定义相应的task以及配置

dockerCompose {
useComposeFiles = ["${rootProject.projectDir}/docker-compose.yml"]
}

此外如果我们想在每次bootRun 之前先启动数据库之类的操作,可以在build.gradle添加task的依赖

bootRun.dependsOn composeUp

单独gradle文件

以上文件组织方式会有一个问题,就是以后插件越来越多的时候,build.gradle文件会膨胀难以维护。这时我们可以把额外插件的配置放在单独的文件里面,然后只需要在build.gradle里面引入即可。

创建单独的gradle文件

在gradle目录下面,我们创建docker-compose目录,然后在docker-compose目录下面创建docker-compose.yml文件与docker-compose.gradle文件

// docker-compose.gradle
apply plugin: 'docker-compose' dockerCompose {
useComposeFiles = ["${rootProject.projectDir}/gradle/docker-compose/docker-compose.yml"]
} bootRun.dependsOn composeUp

在build.gradle文件引入

plugins {
id "com.avast.gradle.docker-compose" version "0.16.11"
} apply from: "${rootProject.projectDir}/gradle/docker-compose/docker-compose.gradle"

关于插件的使用

  • 启动
./gradlew composeUp
// 或者task 缩写
./gradlew cU
  • 暂停
./gradlew composeDown
// 或者task 缩写
./gradlew cD

插件的文档:https://github.com/avast/gradle-docker-compose-plugin

gralde-plugin->docker-compose的使用的更多相关文章

  1. Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana)收集日志

    简述 本文用于记录如何使用Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana) 收集Docker容器日志,使用EFK,可以无侵入代码,获得灵活, ...

  2. Docker compose学习笔记

    一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...

  3. docker compose 笔记

    https://www.youtube.com/watch?v=Uez88TWOECg 是基于这个视频做的笔记. Docker Compose: Compose is a tool for defin ...

  4. 利用docker compose启动gitlab及runner

    添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' contain ...

  5. Docker Compose to CoreOS

    taken from https://docs.docker.com/compose/install/ the only thing is that /usr is read only, but /o ...

  6. Docker Compose—简化复杂容器应用的利器

    Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...

  7. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  8. Docker Compose容器编排

    Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...

  9. Docker(四):Docker 三剑客之 Docker Compose

    前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...

  10. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

随机推荐

  1. vins-fusion(1)安装编译

    https://github.com/HKUST-Aerial-Robotics/VINS-Fusion https://blog.csdn.net/haner27/article/details/1 ...

  2. Matlab|multcompare文档

    multcompare Syntax c = multcompare(stats) c = multcompare(stats,Name,Value) [c,m] = multcompare(___) ...

  3. JNI接口的实现

    JNI接口的实现 什么是JNI 说明:JNI 是 Java Native Interface 的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++,但是它并不妨碍你使用 ...

  4. 2003031120—廖威—Python数据分析第四周作业—matplotlib的学习

    项目 内容 课程班级博客链接 20级数据班(本) 这个作业要求链接 python数据分析第四周作业要求 博客名称 2003031120-廖威-Python数据分析第四周作业-matplotlib的学习 ...

  5. c# 连接SQLite 查询数据 写入txt文本

    using Newtonsoft.Json.Linq; using System; using System.Data.SQLite; using System.IO; namespace @publ ...

  6. Excel 去除合并并保留原值的办法

    部分Excel中,对行进行了合并.这个方便展示,但是筛选后数据展示会出现问题,需要去除合并,并在每行中保留原来的值. 1.先选择整行,并"取消单元格合并" 操作后出现大量的空值行. ...

  7. 持续集成环境(2)-Jenkins插件管理

    Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用.例如从Gitlab拉取代码,使用 Maven构建项目等功能需要依靠插件完成.接下来演示如何下载插件. 修改Jenkins插件下载 ...

  8. 5.3dmax轴相关

    # 知识点: 转换为可编辑的样条线(spline) chamfer 切角 Fillet 圆角 车削命令 书柜案例2 样条线(从图形到多边形) 1.在平面视图中选择矩形并创建一个矩形,将矩形转化为可编辑 ...

  9. C#清空控件的值

    /// 清除容器里面某些控件的值 /// </summary> /// <param name="parContainer">容器类控件</param ...

  10. 使用scrollIntoView 使某元素滚动到指定位置

    var el = document.getElementById('A'); el.scrollIntoView('true'); 知识: element.scrollIntoView(); // 使 ...