Oracle JDK の Docker イメージ上で Java SE のアプリケーションを実行するには以下の手順が必要です。
- アプリケーションの用意
- OracleJDK 環境構築
- アプリケーションの実行
アプリケーションの用意
現場で使う場合には CI ツールでビルドされた jar/war/ear などのアーカイブをコピーして実行や、Git などのバージョン管理システムから最新のソースを取得して、maven などでビルドして実行するかと思います。 今回は簡単に試せるように、次のソースコード(HelloWorld.java)を渡して、Java SE のアプリケーションを作成します。
HelloWorld.java
public class HelloWorld { public static void main(String[] args){ System.out.println("Hello World"); } }
OracleJDK 環境構築
Java SE のアプリケーションは JDK をインストールされていれば実行可能です。Java EE のアプリケーションを動かす場合には アプリケーションサーバがインストールされている環境が必要ですが、jar ファイルに組み込むアプリケーションサーバの場合は本手順で同様に実行できます。
Oracle JDK のDocker環境構築方法はこちらをご参照ください。
Java のアプリケーションを実行するまでの手順はソースコードをクラスファイルへコンパイルして、必要であれば Jar ファイルなどへアーカイブします。 今回はソースファイルが1つだけなのでクラスファイルを作成してアーカイブは行いません。
Dockerfile
FROM oracle/serverjre:8 COPY HelloWorld.java ~/ WORKDIR ~/ RUN javac HelloWorld.java CMD ["java","HelloWorld"]
アプリケーションの実行
ここまで準備が出来たらビルドして実行します。ビルドや実行のオプションは必要に応じて変更します。
Docker ビルド
docker build -t hello .
Sending build context to Docker daemon 4.096 kB Step 1 : FROM oracle/serverjre:8 ---> baadd9279b4b Step 2 : COPY HelloWorld.java ~/ ---> 4215555f2923 Removing intermediate container 6701f92ad8e2 Step 3 : WORKDIR ~/ ---> Running in a07a9ddf6e20 ---> 441c75073eb9 Removing intermediate container a07a9ddf6e20 Step 4 : RUN javac HelloWorld.java ---> Running in 08ab5a1ee051 ---> 30b2b81f1eb1 Removing intermediate container 08ab5a1ee051 Step 5 : CMD java HelloWorld ---> Running in 41a064eb6631 ---> b87a08d86b08 Removing intermediate container 41a064eb6631 Successfully built b87a08d86b08
実行
最後に、作成したアプリケーションを Docker 上で実行してみましょう。
$ docker run hello
Hello World
これで任意のアプリケーションを実行することが出来るようになります。