takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Windows + VirtualBox に構築した minikube のホストVMのストレージを移動する

Windows + VirtualBoxminikubeKubernetes クラスタを作成した場合、仮想ディスクファイル disk.vmdk は C: ドライブに作られます
自分の環境では C: ドライブの空き容量が少ないため、 disk.vmdk を D: ドライブに移動させてみました

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
minikube version: v0.30.0

Kubernetes クラスタの停止

Kubernetes クラスタが停止しているか確認します

C:\>minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100

起動中の場合は下記のコマンドで停止します

C:\>minikube stop

disk.vmdk の移動

disk.vmdk は通常 C:\Users\<ユーザー名>\.minikube\machines\minikube\ に作られます
今回はそれを D: ドライブに移動します

D:\>mkdir D:\minikube\machines\minikube
D:\>copy C:\Users\takaya030\.minikube\machines\minikube\disk.vmdk D:\minikube\machines\minikube

.vbox ファイルの編集

C:\Users\<ユーザー名>\.minikube\machines\minikube\minikube\minikube.vbox で設定されている disk.vmdk ファイルのパスを変更します

--- minikube.vbox.orig  2018-10-27 18:00:04.040947200 +0900
+++ minikube.vbox       2018-10-27 18:59:28.318609900 +0900
@@ -9,7 +9,7 @@
   <Machine uuid="{e1ded2f8-93e5-4dd0-b5b0-ca75477afc5b}" name="minikube" OSType="Linux26_64" snapshotFolder="Snapshots" lastStateChange="2018-10-27T09:00:04Z">
     <MediaRegistry>
       <HardDisks>
-        <HardDisk uuid="{eb3d5ff2-a1ed-40e9-9835-c15ecd031216}" location="C:/Users/takaya030/.minikube/machines/minikube/disk.vmdk" format="VMDK" type="Normal"/>
+        <HardDisk uuid="{eb3d5ff2-a1ed-40e9-9835-c15ecd031216}" location="D:/minikube/machines/minikube/disk.vmdk" format="VMDK" type="Normal"/>
       </HardDisks>
       <DVDImages>
         <Image uuid="{88d3ec5f-1bfe-4ab3-afd3-085df99077cc}" location="C:/Users/Minoru/.minikube/machines/minikube/boot2docker.iso"/>

Kubernetes クラスタの起動

C:\>minikube start

参考サイト

takaya030.hatenablog.com

minikube で Windows 上に Kubernetes 環境を作る

minikube で Web アプリケーションの開発環境を作成する手順メモ 今回はフレームワークをインストールする前段階まで

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
minikube version: v0.30.0
kubectl v0.12.0

minikube と kubectl のインストール

minikube のダウンロード

下記のリンクから最新の Windows 用の exe minikube-windows-amd64 をダウンロードします。(2018年10月27日現在の最新バージョンは v0.30.0 です) https://github.com/kubernetes/minikube/releases

minikube のインストール

ダウンロードしたファイルは minikube.exe とリネームしてパスの通ったフォルダにコピーします。

minikube の config 設定

デフォルトの vm driver を VirtualBox にするため、コマンドプロンプトで以下のコマンドを入力

C:\>minikube config set vm-driver virtualbox

設定内容の確認

C:\>minikube config view
- vm-driver: virtualbox

kubectl のインストール

下記 URL から kubectl.exe をダウンロードしてパスの通ったフォルダに配置します https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/windows/amd64/kubectl.exe

Kubernetes クラスタの作成

minikube startKubernetes クラスタを作成します。このコマンドは %USERPROFILE% と同じドライブ(大抵 C ドライブ)で実行しないとエラーになります。
デフォルトでは --memory 2048 --disk-size 20g と開発環境としてはサイズが小さいのでそれぞれ倍にしました

C:\>minikube start --memory 4096 --disk-size 40g

コマンド入力後、数分待つとクラスタが作成されます

Kubernetes クラスタの確認

kubectl version で以下のようにサーバーバージョンが取得できた場合、Kubernetes クラスタが正常に作成されています

C:\>kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-27T17:05:32Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

minikube ipクラスタの IP アドレスが確認できます

C:\>minikube ip
192.168.99.100

minikube sshクラスタにログインできます

C:\>minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

クラスタ内でも docker コマンドが使用可能です

$ docker -v
Docker version 17.12.1-ce, build 7390fc6

$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/coredns                         1.2.2               367cdc8433a4        8 weeks ago         39.2MB
k8s.gcr.io/kubernetes-dashboard-amd64      v1.10.0             0dab2435c100        2 months ago        122MB
k8s.gcr.io/kube-proxy-amd64                v1.10.0             bfc21aadc7d3        7 months ago        97MB
k8s.gcr.io/kube-apiserver-amd64            v1.10.0             af20925d51a3        7 months ago        225MB
k8s.gcr.io/kube-scheduler-amd64            v1.10.0             704ba848e69a        7 months ago        50.4MB
k8s.gcr.io/kube-controller-manager-amd64   v1.10.0             ad86dbed1555        7 months ago        148MB
k8s.gcr.io/etcd-amd64                      3.1.12              52920ad46f5b        7 months ago        193MB
k8s.gcr.io/kube-addon-manager              v8.6                9c16409588eb        8 months ago        78.4MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64     1.14.8              c2ce1ffb51ed        9 months ago        41MB
k8s.gcr.io/k8s-dns-sidecar-amd64           1.14.8              6f7f2dc7fab5        9 months ago        42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64          1.14.8              80cc5ea4b547        9 months ago        50.5MB
k8s.gcr.io/pause-amd64                     3.1                 da86e6ba6ca1        10 months ago       742kB
gcr.io/k8s-minikube/storage-provisioner    v1.8.1              4689081edb10        11 months ago       80.8MB

デフォルトで VirtualBox の共有フォルダ機能で C:\Users 以下が /c/Users にマウントされています

$ ls -la /c/Users
ls: cannot read symbolic link '/c/Users/All Users': Protocol error
total 61
dr-xr-xr-x 1 docker docker  4096 May 31 14:01  .
drwxr-xr-x 3 root   root       0 Oct 27 03:08  ..
lrwxrwxrwx 1 docker docker     0 Apr 11  2018 'All Users'
dr-xr-xr-x 1 docker docker  8192 May 31 14:06  Default
dr-xr-xr-x 1 docker docker  8192 May 31 14:06 'Default User'
drwxrwxrwx 1 docker docker     0 Oct  2  2016  Default.migrated
drwxrwxrwx 1 docker docker  8192 May 31 14:10  DefaultAppPool
drwxrwxrwx 1 docker docker 28672 Oct 26 14:57  takaya030
dr-xr-xr-x 1 docker docker  4096 May 31 13:52  Public
-rwxrwxrwx 1 docker docker   174 Apr 11  2018  desktop.ini

minikube ssh でログインした場合 exit でログアウトします

$ exit
logout

C:\>

Kubernetes クラスタの停止

minikube stop で停止します

C:\>minikube stop
Stopping local Kubernetes cluster...
Machine stopped.

最後に

minikube で作成したクラスタdocker-machine create で作成した Docker ホストVM と同じ感覚で使えそうです
次回はクラスタ上で Laravel を動かしてみます

参考サイト

qiita.com blog.1q77.com github.com

Google App Engine PHP 7.2 で siler を動かしてみる

先日 PHP の Web フレームワーク siler の開発環境を Docker で作成しましたが、今回は GAE にデプロイして動作確認してみました

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
Docker version 18.05.0-ce, build f150324
docker-machine version 0.14.0, build 89b8332
docker-compose version 1.20.1, build 5d8c71b

siler の開発環境について

こちらの記事の手順で作成します。今回はこれに GAE のデプロイ設定を追加します takaya030.hatenablog.com

ディレクトリ構成

前回から app.yamlgcloud_config フォルダが追加されています

siler
|---app.Dockerfile
|---data.Dockerfile
|---docker-compose.yml
|---php72.Dockerfile
|   
|---data
|   |---www
|       |---app.yaml
|
|---composer
|
|---gcloud_config

各種設定ファイル

差分のみ掲載

data.Dockerfile

--- data.Dockerfile.old Sun Oct 14 17:38:22 2018
+++ data.Dockerfile     Sun Oct 14 15:23:43 2018
@@ -2,6 +2,7 @@
 LABEL maintainer "takaya030"

 RUN mkdir -p /data \
-       && mkdir -p /home/docker/.composer
-VOLUME ["/data","/home/docker/.composer"]
+       && mkdir -p /home/docker/.composer \
+       && mkdir -p /root/.config
+VOLUME ["/data","/home/docker/.composer","/root/.config"]
 CMD ["true"]

docker-compose.yml

--- docker-compose.yml.old      Sun Oct 14 17:41:04 2018
+++ docker-compose.yml  Sun Oct 14 16:20:07 2018
@@ -7,6 +7,7 @@
     volumes:
       - ./data:/data
       - ./composer:/home/docker/.composer
+      - ./gcloud_config:/root/.config
   base:
     build:
       context: .
@@ -25,3 +26,9 @@
     command: ["composer","serve"]
     depends_on:
       - base
+  sdk:
+    image: google/cloud-sdk:alpine
+    volumes_from:
+      - data
+    working_dir: "/data/www"
+    command: ["gcloud","version"]

data/www/app.yaml

このファイルは新規追加となります

runtime: php72
api_version: 1

data イメージのリビルド

data.Dockerfile を変更したのでリビルドする

$ docker-compose build data

起動確認

data コンテナの作り直しと動作確認のため一度ローカルで起動します

$ docker-compose up -d

gcloud 設定

下記コマンドで App Engine のアカウントおよびプロジェクトの設定を行います

$ docker-compose run --rm sdk gcloud init --console-only

プロジェクトの設定完了後、追加で以下の設定を行います

$ docker-compose run --rm sdk gcloud config set core/disable_usage_reporting true
$ docker-compose run --rm sdk gcloud config set component_manager/disable_update_check true
$ docker-compose run --rm sdk gcloud config set metrics/environment github_docker_image

設定内容は以下のコマンドで確認します

$ docker-compose run --rm sdk gcloud info

Cloud Build API の有効化

GAE/PHP7.2 はデプロイ時に Cloud Build API にアクセスします。有効化していない場合は事前にコンソールで有効化します

f:id:takaya030:20181014185618p:plain

デプロイ

下記コマンドで GAEsilerソースコードをデプロイします ( -v で指定しているバージョン番号は任意で OK です)

$ docker-compose run --rm sdk gcloud app deploy -v d001

デプロイに成功した場合、以下のメッセージが表示されます

File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://siler-test.appspot.com]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s default

To view your application in the web browser run:
  $ gcloud app browse

動作確認

デプロイ成功時のメッセージに表示されている URL にアクセスして Hello World が表示されれば成功です

f:id:takaya030:20181014185703p:plain

参考サイト

y-ohgi.hatenablog.com qiita.com

PHP最速フレームワーク siler を docker で動かしてみる

PHPbotAPI サーバーを作成するためにコンパクトなフレームワークを探したところ siler を見つけました
こちらのページによると PHP 最速フレームワークだそうです
開発環境つくりがてら Docker で動作させてみました

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
Docker version 18.05.0-ce, build f150324
docker-machine version 0.14.0, build 89b8332
docker-compose version 1.20.1, build 5d8c71b

ディレクトリ構成

siler
|---app.Dockerfile
|---data.Dockerfile
|---docker-compose.yml
|---php72.Dockerfile
|   
|---data
|   |---www
|
|---composer

各種設定ファイル

php72.Dockerfile

php 7.2 + composer のイメージを作成する Dockerfile

FROM php:7.2-alpine
LABEL maintainer "takaya030"

RUN apk add --update --no-cache --virtual .persistent-deps \
        ca-certificates \
        curl \
        tar \
        libpng \
        libxml2 \
        sudo \
        xz \
        git \
        unzip

# create docker user
RUN adduser -S -u 1000 -g 50 docker \
    && echo 'docker:tcuser' | chpasswd

# install composer
RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer

# modify php.ini
RUN mv $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini \
    && sed -i -e "s/;date.timezone *=.*$/date.timezone = Asia\/Tokyo/" $PHP_INI_DIR/php.ini

ENV COMPOSER_HOME /home/docker/.composer

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

ONBUILD ADD ./data /data

CMD ["true"]

data.Dockerfile

baseapp が参照するボリュームコンテナのイメージを作成する Dockerfile

ROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data \
    && mkdir -p /home/docker/.composer
VOLUME ["/data","/home/docker/.composer"]
CMD ["true"]

app.Dockerfile

アプリケーションサーバーのイメージを作成する Dockerfile

FROM takaya030/php72-alpine
LABEL maintainer "takaya030"

EXPOSE 8000

CMD ["composer","serve"]

docker-compose.yml

version: "2"
services:
  data:
    build:
      context: .
      dockerfile: data.Dockerfile
    volumes:
      - ./data:/data
      - ./composer:/home/docker/.composer
  base:
    build:
      context: .
      dockerfile: php72.Dockerfile
    image: takaya030/php72-alpine
    volumes_from:
      - data
  app:
    build:
      context: .
      dockerfile: app.Dockerfile
    volumes_from:
      - data
    ports:
      - "8000:8000"
    command: ["composer","serve"]
    depends_on:
      - base

data イメージのビルド

最初に data のイメージを作成します

$ cd siler
$ docker-compose build data

base イメージのビルド

次に base のイメージを作成します

$ docker-compose build base

siler のインストール

base イメージを使って data/www/ フォルダに siler をインストールします (コマンドの最後にピリオドがついています)

$ docker-compose run --rm base composer create-project siler/project .

app イメージのビルド

サンプルアプリケーションを動作させるためのイメージをビルドします

$ docker-compose build app

動作確認

以下のコマンドでアプリケーションサーバーが起動します

$ docker-compose up -d

web ブラウザで http://192.168.99.100:8000 にアクセスして Hello World が表示されれば成功です f:id:takaya030:20181013232107p:plain

参考サイト

github.com

docker-compose で Mojolicious 8.0 の開発環境を構築

Mojolicious 8.0 がリリースされたので早速 Docker で動作させてみました

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
docker-machine version 0.14.0, build 89b8332
docker-compose version 1.20.1, build 5d8c71b
perl 5.28.0

ディレクトリ構成

mojo
|---app.Dockerfile
|---base.Dockerfile
|---docker-compose.yml
|   
|---app
    |---cpanfile

各種設定ファイル

base.Dockerfileperl の設定などのスタティックな部分のイメージを作成し、 app.Dockerfile で変更の多いソースコードを追加するかたちをとることでイメージのビルドが最小限になるようにしています

base.Dockerfile

FROM perl:5.28.0
LABEL maintainer "takaya030"

WORKDIR /tmp

RUN apt-get update -y && \
    apt-get clean && \
    rm -fr /var/lib/apt/lists/*

# install carton
RUN cpanm Carton

# create docker user
RUN useradd -d /home/docker -m -s /bin/bash -u 1000 -g 50 docker

USER 1000

RUN mkdir -p /home/docker/app
WORKDIR /home/docker/app

ONBUILD ADD ./app /home/docker/app

CMD ["true"]

app.Dockerfile

FROM takaya030/perl:5.28.0
LABEL maintainer "takaya030"

EXPOSE 3000

CMD ["carton","exec","plackup","-p","3000","myapp.pl"]

docker-compose.yml

version: "2"
services:
  base:
    build:
      context: .
      dockerfile: base.Dockerfile
    image: "takaya030/perl:5.28.0"
    volumes:
      - ./app:/home/docker/app
  app:
    build:
      context: .
      dockerfile: app.Dockerfile
    volumes:
      - ./app:/home/docker/app
    ports:
      - "3000:3000"
    command: ["carton","exec","plackup","-p","3000","myapp.pl"]
    depends_on:
      - base

app/cpanfile

requires 'Plack', '1.0047';
requires 'Mojolicious', '8.0';

base イメージのビルド

最初に base のイメージを作成します

$ cd mojo
$ docker-compose build base

Mojolicious と Plack のインストール

base イメージを使って app フォルダに MojoliciousPlack をインストールします

$ docker-compose run --rm base carton install

Mojolicious のアプリケーション作成

以下のコマンドでサンプルアプリケーションを作成します

$ docker-compose run --rm base carton exec -- mojo generate lite_app myapp.pl

app イメージのビルド

サンプルアプリケーションを動作させるためのイメージをビルドします

$ docker-compose build app

動作確認

以下のコマンドで Plack サーバーが起動します

$ docker-compose up -d

web ブラウザで http://192.168.99.100:3000 にアクセスして以下の画面が表示されれば成功です f:id:takaya030:20170530233327p:plain http://192.168.99.100:3000/perldoc を開くと Mojolicious の perldoc が表示されます f:id:takaya030:20180923000945p:plain

最後に

app イメージには今回のサンプルアプリケーションの動作に必要なものがすべて含まれているので、別の環境で動作させたい場合はこのイメージをコピーするだけで OK です

参考サイト

Mojolicious - Perl real-time web framework

takaya030.hatenablog.com

Docker + Kotlin で Hello, World

前回作成した kotlin がインストールされた Docker イメージを使って Hello, World を表示するまでの手順メモ

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
docker-machine version 0.14.0, build 89b8332
docker-compose version 1.20.1, build 5d8c71b
Kotlin 1.2.61
Gradle 4.10

Docker イメージの作成について

こちらの記事の手順で作成する takaya030.hatenablog.com

ディレクトリ構成

hello は空のフォルダ

kotdev
|
+---base.Dockerfile
+---docker-compose.yml
+---hello

各種設定ファイル

base.Dockerfile

前回作成したものから変更はない

docker-compose.yml

前回作成したものに最後2行が追加されている

version: "2"
services:
  base:
    build:
      context: .
      dockerfile: base.Dockerfile
  manage:
    image: kotdev_base
    hostname: kotdev-manage
    ports: 
      - "2122:22"
    command: /usr/sbin/sshd -D
    volumes:
      - ./hello:/home/docker/hello

イメージのビルド

$ cd kotdev
$ docker-compose build base

コンテナの起動

$ docker-compose up -d

コンテナへログイン

ユーザー名 docker 、パスワード tcuser 、ポート番号 2122 でログイン

$ ssh docker@192.168.99.100 -p 2122

Gradle プロジェクトの作成

ログインしたコンテナ上で下記コマンドを実行

$ cd hello
$ gradle init

build.gradle を下記内容に編集する

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
 */

plugins {
    id "org.jetbrains.kotlin.jvm" version "1.2.61"
}

apply plugin: 'application'

mainClassName = 'code.example.HelloWorldKt'

repositories {
    jcenter()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8"
}

ソースファイルの作成

$ mkdir -p src/main/kotlin/code/example
$ touch src/main/kotlin/code/example/HelloWorld.kt

HelloWorld.kt を下記内容に編集する

package code.example

fun main(args: Array<String>) {
    println("Hello World!!")
}

ビルドと実行

ビルド

$ ./gradlew build
$ ./gradlew 

実行

$ ./gradlew run

> Task :run
Hello World!!

BUILD SUCCESSFUL in 0s
2 actionable tasks: 1 executed, 1 up-to-date

参考サイト

etc9.hatenablog.com

docker-compose で Kotlin の開発環境を構築する

Kotlin がインストールされたイメージ作成とコンテナ起動までの手順メモ

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
docker-machine version 0.14.0, build 89b8332
docker-compose version 1.20.1, build 5d8c71b

ディレクトリ構成

kotdev
|
+---base.Dockerfile
+---docker-compose.yml

各種設定ファイル

base.Dockerfile

今回は sdkman を使用して kotlin , java , gradle をイメージビルド時にインストールしている

FROM ubuntu:18.04
MAINTAINER takaya030

RUN apt-get update -y \
  && apt-get install -y curl zip unzip sudo tar tzdata openssh-server openssh-client \
  && apt-get clean \
  && rm -fr /var/lib/apt/lists/*

# timezone, ssh
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && sed -i '/pam_loginuid\.so/s/required/optional/' /etc/pam.d/sshd \
  && ssh-keygen -A \
  && mkdir /run/sshd

# create docker user
RUN useradd -m -d /home/docker -s /bin/bash -u 1000 -g 50 docker \
  && echo 'docker:tcuser' | chpasswd \
  && echo 'docker ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# install sdkman
USER 1000
WORKDIR /home/docker
RUN curl -s https://get.sdkman.io | bash
RUN /bin/bash -l -c "source /home/docker/.sdkman/bin/sdkman-init.sh;sdk install java;sdk install kotlin;sdk install gradle"

USER root
WORKDIR /root

CMD ["true"]

docker-compose.yml

version: "2"
services:
  base:
    build:
      context: .
      dockerfile: base.Dockerfile
  manage:
    image: kotdev_base
    hostname: kotdev-manage
    ports: 
      - "2122:22"
    command: /usr/sbin/sshd -D

イメージのビルド

$ cd kotdev
$ docker-compose build base

コンテナの起動

$ docker-compose up -d

コンテナへログイン

ユーザー名 docker 、パスワード tcuser 、ポート番号 2122 でログイン

$ ssh docker@192.168.99.100 -p 2122

動作確認

コンテナ上で kotlin , java , gradle が使用可能か確認

docker@kotdev-manage:~$ kotlin -version
Kotlin version 1.2.61-release-89 (JRE 1.8.0_181-b02)

docker@kotdev-manage:~$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (Zulu 8.31.0.1-linux64) (build 1.8.0_181-b02)
OpenJDK 64-Bit Server VM (Zulu 8.31.0.1-linux64) (build 25.181-b02, mixed mode)

docker@kotdev-manage:~$ gradle -version

Welcome to Gradle 4.10!

Here are the highlights of this release:
 - Incremental Java compilation by default
 - Periodic Gradle caches cleanup
 - Gradle Kotlin DSL 1.0-RC3
 - Nested included builds
 - SNAPSHOT plugin versions in the `plugins {}` block

For more details see https://docs.gradle.org/4.10/release-notes.html


------------------------------------------------------------
Gradle 4.10
------------------------------------------------------------

Build time:   2018-08-27 18:35:06 UTC
Revision:     ee3751ed9f2034effc1f0072c2b2ee74b5dce67d

Kotlin DSL:   1.0-rc-3
Kotlin:       1.2.60
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_181 (Azul Systems, Inc. 25.181-b02)
OS:           Linux 4.9.93-boot2docker amd64

参考サイト

qiita.com stackoverflow.com

追記

この Docker イメージを使って Hello, World を実行してみた takaya030.hatenablog.com