takaya030の備忘録

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

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