LoginSignup
8
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-10-08

はじめて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

さいごに

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

8
3
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
8
3