LoginSignup
13
12

More than 5 years have passed since last update.

デフォルトのPlay FrameworkでDockerfileだけでDockerイメージを作る

Posted at

デフォルトのPlay FrameworkでDockerfileだけでDockerイメージを作る健忘録。
sbt-native-packagerとかsbt-dockerとかの設定とsbt実行が面倒くさかった人向け。開発時は、特にDocker使ってないけど、アプリケーションデプロイのときにだけDockerを使う人には良さそうなやり方です。 JDK 1.8.0_144、Play Framework 2.6.11、 sbt 1.1.0 で検証済み。

まずはPlayFrameworkプロジェクトの作成。JDKとsbtは入っている前提。

cd ~/workspace/testapp
sbt new playframework/play-scala-seed.g8

でプロジェクト作成。作成時の入力は、

name [play-scala-seed]: testapp
organization [com.example]: org.soichiro
play_version [2.6.11]: 2.6.11
sbt_version [1.0.4]: 1.0.4
scalatestplusplay_version [3.1.2]: 3.1.2

以上でプロジェクトを作ったとする。

vim Dockerfile

で以上のファイルを作成。

FROM openjdk:8u151-jre-stretch

ENV PROJECT_NAME testapp

ENV VERSION 1.0-SNAPSHOT

ENV SECRET QUStej67ubRe

RUN mkdir /usr/src/app

WORKDIR /usr/src/app

COPY target/universal/${PROJECT_NAME}-${VERSION}.zip ./

RUN unzip ${PROJECT_NAME}-${VERSION}.zip

WORKDIR /usr/src/app/${PROJECT_NAME}-${VERSION}

RUN chmod a+x bin/${PROJECT_NAME}

CMD rm -rf RUNNING_PID && bin/${PROJECT_NAME} -Dapplication.secret=${SECRET}

EXPOSE 9000 9000

シークレットや環境変数、オプションなどは適宜調整してのこと。
これを使ってデプロイ用パッケージの作成とDockerのビルドを行う。

sbt dist && docker build -t your_account_name/testapp .

以上でパッケージの作成とDockerのビルドは完了する。

Successfully tagged your_account_name/testapp:latest

とイメージができればOK。

docker images

でも確認する。

docker run -d --name testapp -p 9000:9000 your_account_name/testapp

以上で起動して、 http://localhost:9000/ で動作確認をして問題なければOK。

docker exec -it testapp /bin/bash

で logs/application.log のログの確認などできるが、 docker logs ${コンテナID} とかで見たほうが楽。別途ログを保存したいとかある時は別な方法を設定のこと。

docker stop testapp

で終了可能。

docker start testapp

で再起動できる。以上、ミドルウェアの利用やデプロイでDocker便利です。最高。

13
12
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
13
12