Edited at

dockerでkotlinをcliでコンパイル、javaで実行できる環境をつくった

はじめてkotlinを勉強しようと思ったのですが、macにkotlinコンパイラをいれるのも少し嫌だったので、docker composeで一式つくりました。

ビルドツールを使用することは想定しておらず、kotlinの簡単な文法を動かしながら確認できる環境を用意するというコンセプトのもと作成してます。

必要な方は参考にしてみてください。


できたもの

./docker-compose.yml

version: "3.7"

services:
java:
build: ./docker/java
tty: true
volumes:
- ./src:/usr/local/src

./docker/java/Dockerfile

FROM openjdk:13-slim

RUN apt-get update && apt-get install -y git \
unzip \
zip \
curl \
vim

WORKDIR /usr/local/src
RUN curl -s https://get.sdkman.io | bash
RUN /bin/bash -l -c "chmod a+x $HOME/.sdkman/bin/sdkman-init.sh;$HOME/.sdkman/bin/sdkman-init.sh;sdk install kotlin"

CMD ["/bin/bash"]

ディレクトリ構成は以下のようになってます

.

├── docker
│   └── java
│   └── Dockerfile
├── docker-compose.yml
└── src
└── test.kt


つかいかた


下準備

docker-compose.ymlを配置したディレクトリで、以下のコマンドを実行するのみです。

$ docker-compose build

$ docker-compose up


うごかす

実際に、test.ktをコンパイルして、javaコマンドで実行します。

コンパイルする対象は./src/test.ktです。

fun main(args: Array<String>) {

println("Hello, World!")
}

コンテナに入って、コンパイルして、実行します。

$ docker-compose exec java bash

root@3b62768acd0b:/usr/local/src# kotlinc test.kt -include-runtime -d test.jar
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
root@3b62768acd0b:/usr/local/src# java -jar test.jar
Hello, World!
root@3b62768acd0b:/usr/local/src#

-Xverify:noneは駄目だというwarningがでてしまいますが、コンパイルができて、javaコマンドで実行することができました。

さらに、/usr/local/srcをボリュームマウントしてますので、コンパイル後にできたjarファイルは、ホストマシンのファイルシステムでも確認可能です。

.

├── docker
│   └── java
│   └── Dockerfile
├── docker-compose.yml
└── src
├── test.jar
└── test.kt


さいごに

これから勉強を進めていく中で、ビルドツール使いたくなったり、いろいろ不都合がでてくるかもしれませんが、一旦環境が整ったということで、どんどん勉強していきたいです!