Java
 Computer >> コンピューター >  >> プログラミング >> Java

DockerコンテナでJavaアプリケーションを実行する方法【初心者向けステップ解説】

Javaは現在、最も人気のあるエンタープライズ向けプログラミング言語のひとつです。オブジェクト指向プログラミングの中核を担う言語であり、エンタープライズレベルのアプリケーションやテストプラットフォームを構築するための優れたプラットフォームが数多く揃っています。一方で、初心者にとってはJava環境のインストールや設定に慣れるまでに、ある程度時間がかかることも少なくありません。

Dockerコンテナを使えば、Javaランタイム環境(JRE)を含んだイメージをそのまま利用でき、必要なライブラリがあらかじめ組み込まれた、管理しやすいパッケージ環境を手に入れられます。ローカルマシンにDockerが導入済みであれば、煩雑な環境構築の手間を省き、DockerレジストリからJavaイメージを直接pullして、コンテナ内でJavaアプリケーションを簡単に実行することが可能です。

本記事では、Dockerコンテナ内でJavaアプリケーションを実行するために必要な一連の手順を解説します。DockerコンテナでJavaを利用する方法は、主に次の2通りがあります。

  • dockerfileにapt-getなどのコマンドを個別に記述し、カスタムイメージを作成・ビルドしながらJavaをインストールする方法

  • Docker公式レジストリからJavaの公式イメージを直接pullし、そのままコンテナ内でJavaアプリケーションを実行する方法

ここでは、より手軽な2番目の方法を採用して進めていきます。それでは、順を追って見ていきましょう。

ステップ1:dockerfileとJavaアプリを格納するビルドコンテキストを作成する

まずはじめに、dockerfileとJavaアプリケーションを格納するためのビルドコンテキスト(作業ディレクトリ)を作成します。

mkdir my-java-app

ステップ2:Javaアプリケーションを作成する

拡張子が「.java」のファイルに、シンプルなJavaアプリケーションを記述します。以下のコード例を「tutorialspoint.java」というファイル名で保存し、前のステップで作成した「my-java-app」ディレクトリ内に配置してください。

import java.util.*;

class Main {
    public static void main(String args[]) {
        System.out.println("Welcome to TutorialsPoint");
    }
}

ステップ3:イメージをビルドするためのDockerfileを作成する

続いて、「dockerfile」という名前のファイルを作成し、以下の内容を記述します。このファイルも、Javaアプリケーションと同じ「my-java-app」ディレクトリ内に保存してください。

# Javaベースイメージを取得
FROM openjdk:8

# 作業ディレクトリを設定
WORKDIR /var/www/java

# ビルドコンテキストをコピー
COPY . /var/www/java

# Javaアプリケーションをコンパイル
RUN javac tutorialspoint.java

# コンパイル済みクラスを実行
CMD ["java", "Main"]

補足として、従来よく使われていた「java」イメージはすでに非推奨(deprecated)となっているため、ここでは公式の「openjdk」イメージを使用しています。新しいプロジェクトでは、より新しいJDKバージョンのタグやEclipse Temurinなどのイメージを選択することも検討するとよいでしょう。

このDockerfileは、Javaイメージの作成と、そのイメージから起動するDockerコンテナ内でのアプリケーション実行に必要な指示をすべて定義しています。処理の流れとしては、まずDockerレジストリからJava 8のイメージを取得し、作業ディレクトリを設定します。次に、Javaアプリケーションを含むビルドコンテキストをコンテナ内へコピーし、javacコマンドでソースコードをコンパイルします。最後にCMD命令によって、コンパイル結果として生成されたクラスを実行します。

ステップ4:Dockerイメージをビルドする

Dockerfileの準備が整ったら、次のbuildコマンドを使ってDockerイメージをビルドします。

sudo docker build -t <image-name> .

<image-name>の部分には任意のイメージ名を指定してください。コマンドを実行すると、Dockerイメージが正常にビルドされます。

ステップ5:Dockerコンテナを実行する

最後に、runコマンドで先ほどビルドしたイメージからDockerコンテナを起動し、その中でJavaアプリケーションを実行します。

sudo docker run <image-name>

コンテナが起動すると、Javaアプリケーションが実行され、標準出力にメッセージが表示されます。

まとめ

あらゆるJavaアプリケーションを実行できる理想的なJavaランタイム環境をゼロから構築するのは、かなり骨の折れる作業になりがちです。ありがたいことに、Dockerでは事前にビルドされたJavaイメージをDockerレジストリから簡単にpullできるため、即座にJavaアプリケーションの開発を始められます。さらにこの仕組みを応用すれば、Springをはじめとする各種Javaエンタープライズプラットフォームの環境も構築でき、大規模なJava開発にも柔軟に対応できます。Dockerコンテナは、バージョン管理・プロジェクト管理・リソース管理などを意識することなく、アプリケーションをまとめて管理できる隔離された環境を提供してくれる強力なツールです。

本記事では、Dockerレジストリから公式Javaイメージをpullする方法、Javaアプリケーションを実行するためのDockerfileの作成方法、さらにdocker buildコマンドとdocker runコマンドによるイメージのビルド、アプリケーションのコンパイルと実行までの一連の手順を解説しました。ぜひ実際に手を動かして、Docker×Javaの快適な開発環境を体感してみてください。

  1. EclipseでJavaFXをセットアップする方法|Maven依存関係とJARの手動追加を解説

    EclipseでJavaFXアプリケーションを開発するためには、あらかじめ環境構築が必要です。この記事では、Maven依存関係を利用する方法と、必要なJARファイルを手動で追加する方法という2つのアプローチをわかりやすく解説します。事前準備セットアップを始める前に、お使いのシステムにEclipseとJava(JDK)が正常にインストールされていることを確認してください。これらが揃っていれば、どちらの方法でもスムーズにJavaFX環境を構築できます。方法1:Maven依存関係を使ったセットアップMavenを利用してJavaFX環境を構築する場合は、まずEclipseで通常のJavaプロジェクトを

  2. DockerでMongoDBをコンテナとしてデプロイする手順を徹底解説

    最も扱いやすいNoSQLデータベースの一つであるMongoDB®には、さまざまなデプロイ方法が用意されています。この記事では、Docker®を使用してMongoDBをコンテナとしてデプロイし、シェルクライアントからそのコンテナを操作する方法を解説します。 はじめに パソコンやサーバーにDockerをインストールしたら、以下の手順に従ってMongoDBをDockerコンテナとしてデプロイしていきます。 最新版または特定バージョンのMongoDB Dockerイメージをダウンロードする MongoDBのインスタンスをコンテナとしてデプロイする 基本的なシェル操作でMongoDB Dockerコン