Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明

Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明

Java 言語には多くのバージョンがあります。一般的に使用されている Java 8 に加えて、一部のレガシー プロジェクトでは Java 7 が使用され、一部の新しいプロジェクトでは Java 10 以降が使用される場合があります。ローカルの Java 開発環境を切り替える場合は、ある程度の時間がかかり、将来的に異なるバージョンを切り替えるたびに切り替えを行う必要があります。

Docker の登場により、開発環境やコンパイル環境のさまざまなバージョンを簡単に維持できるようになりました。Docker が何なのかわからない場合は、Docker の概要をお読みください。 Java開発環境を構築するには2つの方法があります。1つはコンテナ内でコンパイルして実行する方法、もう1つはコンテナ外でコンパイルして実行する方法。それぞれやり方を見ていきましょう。

準備: まず、Docker がインストールされていることを確認します。都合がよければ、 openjdk:8イメージを事前にプルダウンして、全員の時間を節約することもできます。この記事はmacOS 10.15.7、Docker 19.03.8の環境で検証されています。

コンテナ内でコンパイルして実行する

この記事では、簡単な Helloworld プログラムを例に挙げます。プロジェクトのファイル ディレクトリ構造とコードは次のとおりです。

$ ls -lh
合計 24
-rw-r--r-- 1 shiqiang スタッフ 60B 11 11 19:02 Dockerfile
-rw-r--r-- 1 shiqiang スタッフ 123B 11 11 19:02 Helloworld.java

コードの内容。

パブリッククラスHelloWorld {
 パブリック静的void main(String args[]) {
 System.out.println("こんにちは世界。\n");
 }
}

上記の準備が完了したら、Dockerfile の内容を編集できます。

FROM openjdk:8 #openjdk:8 に基づいてイメージを構築します COPY . /usr/src/myapp #ディレクトリ内のコードをイメージ内の /usr/src/myapp の場所にコピーします WORKDIR /usr/src/myapp #/usr/src/myapp を作業ディレクトリとして設定します RUN javac Helloworld.java #コンパイル コマンドを実行して Helloworld.java プログラムをコンパイルします CMD ["java", "Helloworld"] #コンパイルされた Helloworld を実行します

イメージファイルをビルドします。

java_in_docker_env_8 を実行します。 
$ docker images # docker imagesコマンドを使用して、ビルドされたjava_in_docker_env_8イメージを確認します

コンテナを実行します。

$ docker run -it --rm java_in_docker_env_8
こんにちは世界。

$ ls -lh     
合計 24
-rw-r--r-- 1 shiqiang スタッフ 112B 11 12 10:53 Dockerfile
-rw-r--r-- 1 shiqiang スタッフ 123B 11 12 10:49 Helloworld.java

プログラムの出力を確認し、現在のディレクトリにコンパイルされていない結果があるかどうかを確認できます。しかし、この方法ではコンテナを起動するたびにコンパイルする必要があり、コンパイル結果を共有する方法がありません。次のセクションでは、コンパイル結果をコンテナ外に保存する方法について説明します。

コンテナ外でコンパイルして実行する

作業ディレクトリとコードの準備は前のセクションと同じですが、Dockerfile ファイルは前のセクションとは少し異なります。

openjdk:8より
コピー . /usr/src/myapp
ワークディレクトリ /usr/src/myapp

イメージファイルをビルドします。

$ dockerビルド -t java_env_8
$ docker images # docker imagesコマンドを使用して、ビルドされたjava_env_8イメージを確認します

ファイルをコンパイルします。

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp java_env_8 javac Helloworld.java
$ ls -lh # コンパイルされた結果の合計32が表示されます
-rw-r--r-- 1 shiqiang スタッフ 112B 11 12 10:53 Dockerfile
-rw-r--r-- 1 shiqiang スタッフ 427B 11 12 11:09 Helloworld.class
-rw-r--r-- 1 shiqiang スタッフ 123B 11 12 10:49 Helloworld.java

プログラムを実行します。

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp java_env_8 java Helloworld 
こんにちは世界。

最後に

この記事では、単純な Java 開発環境のみを構築します。この方法を使用して Java プログラムをコンパイルして実行する利点は、JDK をローカルにインストールする必要がないことです。これは、複数の JDK バージョンのプログラムをコンパイルする必要がある場合に便利です。しかし、複雑なプロジェクトは Maven や Gradle を使用して構築されることが多いです。そのようなプロジェクトも、この記事で紹介した方法で構築できるでしょうか? 次回の記事もお楽しみに。また、公式アカウントをフォローして、最新の記事をプッシュで受け取るのもお勧めです。

参考資料Docker - Java 開発環境の作成

Docker を使って簡単な Java 開発およびコンパイル環境を構築する方法についての記事はこれで終わりです。Docker を使って Java 開発およびコンパイル環境を構築する方法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • DockerでJavaプログラムを起動する方法
  • Docker で Java 8 Spring Boot アプリケーションを開発する方法
  • Dockerを使用してJava環境を構築する手順
  • Javaデータ開発補助ツールDockerと一般プログラムの使い方

<<:  MySQLのFreeListメカニズムの詳細な説明

>>:  JavaScript 配列重複排除問題の詳細な研究

推薦する

5分でDockerを使ってRedisのクラスターモードとセンチネルモードを構築する方法を教えます

目次1. 準備Redisイメージを取得する2. Redis Sentinel マスタースレーブモード...

MySQL共通インデックスとユニークインデックスの詳細な説明

シナリオ1. ID番号のフィールドを備えた市民システムを維持する2. ビジネス コードでは、重複する...

トップに戻るボタンを実装するJavaScript

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

SCSS スタイルのコードを 50% 削減する 14 の実践的な経験

序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...

Webページ作成の質問: 画像ファイルのパス

この記事は 123WORDPRESS.COM Lightning によるオリジナルです。転載する際に...

プライベートイメージウェアハウスを構築するためのDockerレジストリの実装方法

マイクロサービスのイメージは、保存用に Docker リポジトリにアップロードされます。一般的に使用...

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

CSS で実装された円形のプログレスバー

成果を達成する 実装コードhtml <div class="wrap"&g...

JS 開発効率を上げる4つの超実践的なヒント

目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...

CSS3 列を使用したカード ウォーターフォール レイアウトを実装するためのサンプル コード

この記事では、カード ウォーターフォール レイアウトを実現するための CSS3 列のサンプル コード...

React を使って小さなプログラムを書くための Remax フレームワークのコンパイル プロセス分析 (推奨)

Remax は、実行時に構文制限のないソリューションを採用した React を使用して小規模なプロ...

CSS3は水平方向の中央揃え、垂直方向の中央揃え、水平方向と垂直方向の中央揃えのサンプルコードを実装しています。

フロントエンドの担当者であれば、面接でも仕事中でも、「CSS を使用して中央揃えにする」という効果に...

CentOS 6.x のインストール時に発生するエラー「ディスク sda に BIOS RAID メタデータが含まれています」の解決方法

今日、CentOS6.2 をインストールしていたところ、ハード ドライブの検出段階を通過できませんで...

Nodeはkoa2を使用してシンプルなJWT認証方式を実装します

JWT の紹介JWTとは正式名称はJSON Web Tokenで、現在最も人気のあるクロスドメイン認...

njs モジュールを使用して nginx 構成に js スクリプトを導入する

目次序文1. NJSモジュールをインストールする方法1: NJSモジュールを動的にロードする方法2:...