Dockerコンテナ上でJavaで書いたコードを動かすまで

前回、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!!という文字が出力されました。

参考:

コメント