MENU

[Java 初心者学習] Docker が Java 開発現場でどのように扱われているか – 0014

Docker とは、自分のパソコンの中に本番環境と全く同じ構成のサーバー (仮想環境) を一瞬かつ軽量に立ち上げられる仕組みのことです。今回は「 Docker (ドッカー) が Java 開発現場でどのように扱われているか」について簡単にお伝えします。

目次

Docker が Java 開発現場でどのように扱われているか

以下の手順を実施することで、アプリケーションは開発環境に依存しない「Dockerが入っている環境であれば、世界中どこのサーバーでもコマンド1つで全く同じように動く状態」を実現することができます。

  1. Docker を起動
  2. Spring BootアプリをJarファイルにビルド
  3. 設定ファイル「Dockerfile」作成
  4. Dockerイメージをビルド
  5. Dockerコンテナを起動
  6. 動作確認

Docker の起動

最初に Docker を起動します。Docker の種類や導入方法については、以下の別記事をご参照ください。

Spring BootアプリをJarファイルにビルド

Dockerコンテナに入れるために、まずはプロジェクトを1つの実行可能ファイル (.jar) にまとめます。

Eclipseのパッケージ・エクスプローラーでプロジェクトを右クリック、実行から Maven ビルド … を選択してください。

ここではすでに demo プロジェクトというものが実装されているとします。どういうものを実装したかについては、以下の記事をご参照ください。

設定画面が開くので [ゴール (Goals)] の入力欄に以下のコマンドを入力してください。入力後、実行をクリックします。

clean package

上記画像のように、コンソールに BUILD SUCCESS と表示されたら完了です。プロジェクトの target フォルダの下にJARファイルができていることを確認してください。

設定ファイル「Dockerfile」作成

Dockerに対して「どういう環境を作り、どうやってJavaアプリを起動するか」を指示する Dockerfile を作成します。

プロジェクトの直下を右クリックし、 新規からファイルを選択してください。(pom.xml と同じ階層)

ファイル名に Dockerfile と入力し、完了をクリックしてください。

# 1. ベースとなる環境として、Java 21がインストールされた軽量Linux(Alpine)を指定
FROM eclipse-temurin:21-jdk-alpine

# 2. コンテナ内の作業ディレクトリを「/app」に設定
WORKDIR /app

# 3. 先ほどビルドしたJarファイルを、コンテナ内の「app.jar」という名前でコピー
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 4. コンテナ起動時に実行するコマンドを指定(java -jar app.jar を実行)
ENTRYPOINT ["java", "-jar", "app.jar"]

Dockerfile に上記の内容を入力し、保存します。

コマンドプロンプトを開き、cd コマンドでプロジェクトがあるフォルダに移動します。移動後、以下のコマンドを入力してください。このコマンドで todo-app のバージョン 1.0 というイメージがPC内に作成されます。

docker build -t todo-app:1.0 .

Dockerコンテナを起動

コマンドプロンプトで、以下のコマンドを入力します。

docker run -d -p 8080:8080 --name my-todo-container todo-app:1.0
-dバックグラウンドで実行する(デタッチモード)
-p 8080:8080自分のPCのポート 8080 へのアクセスを、コンテナ内のポート 8080 へ転送する設定。
–name my-todo-containerこの起動するコンテナに固有の名前をつける

動作確認

Eclipse側でアプリが停止している (ポート8080が空いている) ことを確認した上で、ブラウザを開き、以下のURLにアクセスしてください。Eclipse上で起動したときと全く同じToDoアプリの画面が表示され、タスクの追加・削除ができることを確認しましょう。

http://localhost:8080/todo

これが確認できれば、あなたのアプリケーションはEclipseという開発環境の手を離れ、「Dockerが入っている環境であれば、世界中どこのサーバーでもコマンド1つで全く同じように動く状態」を実現することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次