takaya030の備忘録

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

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