Docker Compose を用いて Docker 上で Scala を動かす

株式会社プライムストラクチャーのエンジニアのSayaです。
今回は Docker 上で Scala が動く環境を、 Docker Compose を用いて作成してみたいと思います。

検証環境

この検証は以下の環境で行いました。

  • macOS Mojave 10.14.5
  • Docker Desktop 2.0.0.3
  • Docker Engine 18.09.2
  • Docker Compose 1.23.2

Scala ファイルを作成する

Scala で Hello World を出力するファイルを作成します。

[Hello.scala]
object Hello {
    def main(args: Array[String]) {
        println("Hello, world")
    }
}

また以下のコマンドで作成した Hello.scala をコンパイルします。

$ scalac Hello.scala

すると Hello$.class、Hello.class が作成されます。

Docker Compose を記述する

以下の Docker Compose ファイルを作成します。

[docker-compose.yml]
version: "3.6"
services:
    scala-app:
        image: "hseeberger/scala-sbt:latest"
        tty: true
        volumes:
        - ./:/src

イメージには公式のものが無かったので hseeberger/scala-sbt を用いました。

コンテナを起動する

以下のコマンドで Docker コンテナを起動します。

$ docker-compose up -d

以下のコマンドでコンテナが起動出来たか確認します。

$ docker ps

また以下のコマンドで起動したコンテナ内に入ります。

$ docker-compose exec scala-app bash

Scala ファイルを実行する

コンテナの中に入ったら Scala ファイルが格納されているフォルダへ移動します。

$ cd /src

ここに Hello.scala が入っているので実行してみます。

$ scala Hello

すると Hello world が返ってきます。

まとめ

今回は Docker Compose を用いて Docker 上で Scala を動かす方法を紹介していきました。

Scala はまだ公式のイメージがないため、今回はユーザーが作成したイメージを用いました。

公式のイメージが Docker Hub で公開されたらそちらを使うと良いと思います。

参考文献

Hello, world | Hello, Scala tutorial
hseeberger/scala-sbt – Docker Hub