LoginSignup
3
2

More than 5 years have passed since last update.

Gradleでbowerを利用したフロントエンドのビルドまでを行う方法 (5/6)

Last updated at Posted at 2016-03-31

はじめに

Java/SparkプロジェクトのGradleを利用したビルド/デプロイについて、私が試したことをまとめたものです。
(ここで言うSparkは、分散処理ライブラリのApache Sparkではなく、JavaのSinatraライクなMicroframeworkのSparkのことです)

目次

  1. Hello Worldアプリ
  2. jadeテンプレートエンジン
  3. Grunt/bowerによるWebパッケージのビルド
  4. 付録A. TravisCIによるビルド
  5. 付録B. Gradleでdocker build
  6. 付録C. TravisCIからDockerHubへ docker push

各章でのソースコードは Commits · kaakaa/gradle-frontend-boilerplate から確認できます。

環境

  • Java 1.8.0_74
  • Gradle 2.12
  • spark-core 2.3
  • spark-template-jade 2.3
  • node.js 4.4.0

付録B. Gradleでdocker build

概要

bmuschko/gradle-docker-pluginを使って、Gradleからdocker buildを実行するタスクを定義する。

準備

下記を実施しておく。

  • dockerをインストールする
  • unix:///var/run/docker.sockでDocker Remote APIにアクセスできるようにする

実行

git clone https://github.com/kaakaa/gradle-frontend-boilerplate.git
cd gradle-frontend-boilerplate
git checkout sec_B

./gradlew buildDockerImage

ビルドスクリプト

長くなってきたので掻い摘んで。

build.gradle
plugins {
    id 'java'
    id 'application'
    id 'com.moowork.grunt' version '0.11'
    id 'com.moowork.node' version '0.11'
    id 'com.bmuschko.docker-remote-api' version '2.6.6'  // (1) - GradleからDockerを操作するプラグインを追加する
}

...


/** For docker build */
docker {
    url = 'unix:///var/run/docker.sock'  // (2) - Docker Remote APIのアドレスを指定する
}

import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage

task buildDockerImage(type: DockerBuildImage) {  // (3) - docker buildを実行するタスクを定義する
    dependsOn clean, installDist  // (4) - docker buildに必要なファイルを生成するタスクへの依存を宣言する
    inputDir = rootDir
    tag = 'kaakaa/gradle-frontend-boilerplate'
}

/** Other settings */
task wrapper(type: Wrapper) {
    gradleVersion = '2.12'
}

(1) GradleからDockerを操作するプラグインを追加する

今回はbmuschko/gradle-docker-plugin: Gradle plugin for managing Docker images and containers.を使う。
GradleでDocker操作するプラグインは、同じぐらいのスター数でいくつもあるのでデファクトが無い感じ…

(2) Docker Remote APIのアドレスを指定する

予め起動していたDocker Remote APIのアドレスを指定する

(3) docker buildを実行するタスクを定義する

bmuschko/gradle-docker-pluginのお作法通り、docker buildを実行するタスクを定義する。
tag名はお好みで。

(4) docker buildに必要なファイルを生成するタスクへの依存を宣言する

installDistタスクの成果物をDockerイメージに含めるため、buildDockerImageタスクがinstallDistタスクのあとに実行されるよう設定している。

ビルドスクリプト(Dockerfile)

Dockerfile
FROM java

ADD build/install/gradle-frontend-boilerplate /usr/local/src

ENTRYPOINT ["sh", "-c", "/usr/local/src/bin/gradle-frontend-boilerplate"]

installDistの成果物をDockerイメージの/usr/local/srcに追加し、起動スクリプトを実行するだけのDockerfileです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2