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
参考サイト
追記
この Docker イメージを使って Hello, World を実行してみた takaya030.hatenablog.com