docker コンテナーで play アプリケーションを開発するための開発環境をセットアップしようとしています。sbt をインストールしたイメージを作成しました。次に、ホストのプロジェクト フォルダーをボリュームとしてコンテナーにマップし、対話モードでシェルを実行します。
docker run -v /Users/jorgen/dev/play-sbt-docker/app:/data/app -w /data/app -p 9999:9000 -i -t jorgenfb/sbt /bin/bash
次に、 を実行して play アプリケーションを起動しますsbt ~run
。再生サーバーは検索するだけで起動し、ホスト上のファイルを編集すると再コンパイルされます。
[info] Compiling 1 Scala source to /data/app/target/scala-2.10/classes...
[success] Compiled in 2s
問題は、更新時に変更がブラウザーに表示されないことです。キャッシュを無効にしたため、キャッシュの問題はありません。ホストからアプリケーションを実行すると、すべて正常に動作します。
編集: これは、sbt でコンテナーを作成するために使用する Dockerfile です。
FROM dockerfile/java:oracle-java8
MAINTAINER Jørgen Borgesen
ENV SBT_VERSION 0.13.5
# Install sbt
RUN cd /tmp && \
wget https://dl.bintray.com/sbt/native-packages/sbt/$SBT_VERSION/sbt-$SBT_VERSION.zip && \
unzip sbt-$SBT_VERSION.zip -d /usr/local && \
rm sbt-$SBT_VERSION.zip
さらに調査を行いました。docker コンテナー内で、次のように play アプリケーションを開始します。
[ root@aa1f2327d938:/data/app ]$ /usr/local/sbt/bin/sbt
[info] Loading project definition from /data/app/project
[info] Set current project to my-first-app (in build file:/data/app/)
[my-first-app] $ ~run
--- (Running the application from SBT, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Ctrl+D to stop and go back to the console...)
[success] Compiled in 740ms
ブラウザでのページの読み込みは正常に機能します。次に、ホスト上のインデックス ファイルを変更します。これにより、コンテナー内で再コンパイルがトリガーされます。
[info] Compiling 1 Scala source to /data/app/target/scala-2.10/classes...
[success] Compiled in 1s
ブラウザを更新しても、最初のインデックス ファイルが表示されます。変更がコンテナー内の再生アプリケーションによって取得された場合でも。また、コンパイルされたファイルを調べましたtarget/scala-2.10/classes/views/html
(コンテナーで play アプリケーションを実行していて、複数のターミナルを接続する方法がわからないため、ホスト上で)。コンパイルされたファイルが変更されました。
次に行ったのは、Ctrl-D を押すことでした。これにより、上記の「(Server started, use Ctrl+D to stop and go back to the console...)」という出力メッセージに従って、sbt コンソールに戻るはずです。ただし、これにより次の出力が得られます。
[success] Total time: 455 s, completed Sep 25, 2014 7:40:35 AM
1. Waiting for source changes... (press enter to interrupt)
--- (Running the application from SBT, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Ctrl+D to stop and go back to the console...)
[info] play - Application started (Dev)
以前に行った変更は、更新後にブラウザーに反映されます。