前回、Dockerを最低限動かす準備をしました。今回は、Docker上でJavaで書いたコードを動かすまでをやってみます。
Javaのコードを用意
まずはDocker上で動かすためのJavaのコードを用意します。今回は単純にHello Worldを出力するだけの以下のコードを使います。
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!!");
}
}
このJavaファイルを、Dockerfileを作成予定のディレクトリと同じディレクトリに置いておきます。
Dockerfileの作成
ベースイメージの選択
ベースイメージには無難にopenjdkあたりを選べばいいかと思ってましたが、以下を見るとopenjdkのイメージはdeprecatedになっているようでした。
https://hub.docker.com/_/openjdk
なので今回は、openjdkのイメージからの移行先の1つとして紹介されていた以下のeclipse-temurinを利用します。
https://hub.docker.com/_/eclipse-temurin
Dockerfileの記述
Dockerfileを記述します。Dockerfileにはjavaのコンパイルや実行に関する情報も記述します。
# ベースイメージにはeclipse-temurinを利用
FROM eclipse-temurin:17.0.5_8-jdk
# 作業用のディレクトリを作成
WORKDIR /work
# ローカルのHelloWorld.javaというファイルをDockerコンテナ上の作業用ディレクトリにコピー
COPY ./HelloWorld.java /work
# コンパイル
RUN javac HelloWorld.java
# 実行
CMD java HelloWorld
これで、「ローカルのHelloWorld.java
というファイルをDocker上にコピーして、コンパイルして実行する」という処理を記述したDockerfileが完成しました。
Dockerイメージの作成 & 実行
Dockerfileからjava17_helloworld
という名前のDockerイメージを作成します。
$ docker build -t java17_helloworld .
作成したDockerイメージを実行します。
$ docker run java17_helloworld
Hello World!!
無事にJavaのコードがコンパイル、実行され、Hello World!!
という文字が出力されました。
参考:
コメント