カテゴリ: Quarkus 更新日: 2026/03/07

QuarkusとDocker環境を組み合わせて効率的に開発する方法:初心者でもできるコンテナ開発入門

QuarkusとDocker環境を組み合わせた開発セットアップ
QuarkusとDocker環境を組み合わせた開発セットアップ

先生と生徒の会話形式で理解しよう

生徒

「Quarkusの開発ではDockerが便利と聞きました。実際にはどんな場面でDockerを使うんですか?」

先生

「Dockerを使うと、データベースやメッセージングなどの外部サービスを簡単に立ち上げられるので、Quarkusの開発効率がとても上がります。」

生徒

「Quarkusアプリ自体もDockerで動かせるんですか?」

先生

「もちろん可能です。しかもQuarkusは軽量なので、Dockerと相性が抜群です。それでは実際にDockerと組み合わせた開発手順を見ていきましょう。」

1. DockerとQuarkusを組み合わせるメリットとは?

1. DockerとQuarkusを組み合わせるメリットとは?
1. DockerとQuarkusを組み合わせるメリットとは?

Quarkus(クォーカス)は、クラウドネイティブ環境での動作を前提に設計されたモダンなJavaフレームワークです。最大の特徴は、従来のJavaフレームワークと比較して「圧倒的な起動の速さ」「メモリ消費量の少なさ」にあります。この特性が、軽量な実行環境であるDockerと組み合わさることで、コンテナのメリットを最大限に引き出すことができます。

特に初心者にとって、Dockerを利用する最大の利点は「環境構築の自動化と統一」です。プログラミングを始めたばかりの時、自分のパソコンだけで動く設定を作ってしまうと、他の人の環境や本番サーバーで動かないという問題がよく起こります。Dockerを使えば、開発者全員が同じ環境で開発を進められるため、無駄なエラーに悩まされる時間が大幅に削減されます。

???? イメージで理解する:QuarkusとDockerの親和性

例えば、従来のJavaが「豪華なフルコース料理」を準備するような重さだったのに対し、Quarkusは「必要な具材だけを詰め込んだ高機能な軽食」のようなイメージです。この「軽食」をDockerという「デリバリーBOX」に入れることで、どこへでも素早く、確実に届けることが可能になります。

また、Quarkus独自の強力な機能に「Dev Services」があります。これは、ソースコードを書き換えるだけで、背後で必要なDockerコンテナ(データベースなど)をQuarkusが勝手に立ち上げてくれる機能です。初心者でも難しい設定ファイルを記述することなく、モダンなマイクロサービス開発の恩恵をすぐに享受できる点が、世界中のエンジニアに支持されている理由です。

2. QuarkusアプリをDockerで動かす基本構成:初心者向けガイド

2. QuarkusアプリをDockerで動かす基本構成:初心者向けガイド
2. QuarkusアプリをDockerで動かす基本構成:初心者向けガイド

Quarkus(クオーカス)は、従来のJavaフレームワークよりも起動が速く、メモリ消費が少ない次世代の技術です。このアプリを「Docker(ドッカー)」という仮想の箱に入れることで、自分のPCでもクラウド上でも、全く同じように動かすことができます。ここでは、最も標準的な「JVMモード」でのDockerfile作成手順を解説します。

まずは、プロジェクトのルートディレクトリ(一番上の階層)に「Dockerfile」という名前のファイルを作成し、以下の内容を記述しましょう。プログラミングが初めての方でも、この5行をコピー&ペーストするだけで準備は完了です。


# 1. Javaを動かすための基盤(JRE 17)を用意する
FROM eclipse-temurin:17-jre

# 2. コンテナの中での作業場所を決める
WORKDIR /app

# 3. ビルドしたQuarkusアプリをコンテナの中にコピーする
COPY target/quarkus-app/ /app/

# 4. コンテナが起動したときに実行するコマンドを指定する
CMD ["java", "-jar", "quarkus-run.jar"]

この設定ファイルは、いわば「アプリの設計図」です。FROMでJavaの実行環境を呼び出し、COPYで作成したプログラムを中に入れています。特にQuarkusの場合、実行に必要なファイルがtarget/quarkus-app/フォルダにまとまる仕組みになっているため、フォルダごとコピーするのがスムーズに動かすコツです。

このようにDockerイメージ化しておくことで、OSの違いによる「自分のパソコンでは動くのに、サーバーでは動かない」といったトラブルを未然に防ぎ、軽量かつ高速なデプロイが可能になります。

3. Quarkusアプリ用のサンプルREST API

3. Quarkusアプリ用のサンプルREST API
3. Quarkusアプリ用のサンプルREST API

Dockerで実行する前に、動作確認用のQuarkus REST APIを作成しておきましょう。以下のようなシンプルなAPIを作成しておくと、Docker環境での動作確認が簡単になります。


import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/docker")
public class DockerResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Docker上でQuarkusが動作しています。";
    }
}

APIを用意したら、ビルドして動作させるためのDockerコマンドを実行します。

4. QuarkusアプリをDockerでビルドして実行する方法

4. QuarkusアプリをDockerでビルドして実行する方法
4. QuarkusアプリをDockerでビルドして実行する方法

次に、QuarkusアプリをDockerイメージ化して実行します。


docker build -t quarkus-docker-sample .
docker run -p 8080:8080 quarkus-docker-sample

コンテナが起動すると、ブラウザで http://localhost:8080/docker にアクセスすることで、Quarkus REST API のレスポンスが得られます。


Docker上でQuarkusが動作しています。

このように、DockerはQuarkusアプリの実行環境を簡単に構築できる強力なツールです。

5. Dev Servicesを使ったDocker連携の自動化

5. Dev Servicesを使ったDocker連携の自動化
5. Dev Servicesを使ったDocker連携の自動化

Quarkusには「Dev Services」という優れた機能があり、開発時にDockerコンテナを自動起動できます。例えばデータベース(PostgreSQLなど)を利用する場合、設定なしで自動的にDockerコンテナが起動し、開発用のDBとして使えるようになります。

これにより、Dockerの操作に不慣れな初心者でもコンテナ環境を活用しながらアプリ開発を進めることができます。


quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=user
quarkus.datasource.password=pass
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/mydb

設定を記述するだけで、Quarkusが必要なコンテナを自動的に起動してくれます。

6. docker-composeで外部サービスとまとめて起動する

6. docker-composeで外部サービスとまとめて起動する
6. docker-composeで外部サービスとまとめて起動する

複雑な環境ではDocker Composeを使って、Quarkusアプリ・データベース・メッセージングサービスなど複数コンテナを一括管理できます。


version: '3'
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: pass
      POSTGRES_USER: user
    ports:
      - "5432:5432"

このようにdocker-compose.ymlを作成しておけば、以下のコマンドで一括起動できます。


docker compose up -d

Quarkusとの連携がスムーズになり、開発全体が一段と効率的になります。

まとめ

まとめ
まとめ

QuarkusとDockerを組み合わせた開発の全体像

この記事では、QuarkusとDocker環境を組み合わせて効率的に開発する方法について、初心者にも分かりやすい形で解説してきました。 Quarkusは軽量で高速なJavaフレームワークとして設計されており、コンテナ技術との相性が非常に良い点が大きな特徴です。 Dockerを使うことで、開発環境と本番環境の差異を減らし、同じ設定・同じ動作をどこでも再現できるようになります。 これは個人開発だけでなく、チーム開発やマイクロサービス構成においても大きなメリットとなります。

特にJava開発では、環境構築の手間や依存関係の違いが原因でトラブルが起こりがちですが、 Dockerコンテナを活用することで、OSやローカル環境に依存しない安定した開発基盤を整えることができます。 Quarkusは起動が速く、メモリ消費も抑えられているため、Docker上でも快適に動作し、 コンテナ開発に初めて触れる人でも扱いやすいフレームワークと言えるでしょう。

DockerfileとREST APIを通して理解する実践ポイント

Dockerfileを用意することで、Quarkusアプリを簡単にDockerイメージ化できる点も重要なポイントです。 記事内で紹介したように、JVMモードのDockerfileを使えば、 特別な設定をしなくてもJavaアプリケーションをコンテナとして起動できます。 この仕組みを理解することで、開発環境だけでなく、検証環境や本番環境への展開もスムーズになります。

また、REST APIのサンプルを通して、Docker上でQuarkusアプリが正しく動作しているかを確認する流れも学びました。 ブラウザでエンドポイントにアクセスし、期待したレスポンスが返ってくることで、 コンテナ環境でも通常のJavaアプリと同じ感覚で開発できることが実感できたはずです。 この「いつも通り動く」という感覚が、Dockerを使い続ける上での安心感につながります。

Dev Servicesとdocker composeによる開発効率の向上

QuarkusのDev Servicesは、Dockerと連携した開発をさらに快適にしてくれる機能です。 データベースやメッセージングサービスなど、通常であれば手動で起動が必要な外部サービスを、 設定だけで自動的にDockerコンテナとして起動してくれます。 これにより、開発者はインフラの準備に時間を取られることなく、 アプリケーションのロジックや設計に集中できるようになります。

さらにdocker composeを使えば、Quarkusアプリと複数の外部サービスをまとめて管理できます。 コマンド一つで環境全体を起動・停止できるため、開発の切り替えや再現性が大幅に向上します。 この仕組みを理解しておくことで、実務に近い開発スタイルを早い段階から身につけることができます。

まとめ用サンプルプログラム

以下は、Docker環境での動作確認を意識したシンプルなQuarkus REST APIの例です。 記事内と同じクラス構成とアノテーションを使い、 Docker上でも問題なく動作することを確認しやすい形になっています。


import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/summary-docker")
public class SummaryDockerResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String summary() {
        return "QuarkusとDockerを組み合わせた開発のまとめ";
    }
}

このようなシンプルなAPIを用意しておくことで、 Dockerビルドやdocker runの結果をすぐに確認でき、 コンテナ環境での動作確認がより分かりやすくなります。

先生と生徒の振り返り会話

生徒

「QuarkusとDockerを組み合わせることで、 環境構築がとても楽になることがよく分かりました。 Java開発なのに、こんなに手軽に動かせるのは意外でした。」

先生

「Dockerを使うことで、環境差異の問題を減らせるのが大きな利点ですね。 Quarkusは軽量なので、コンテナ環境でもストレスなく動かせます。」

生徒

「Dev Servicesでデータベースが自動起動するのも便利でした。 自分でDockerコマンドをたくさん覚えなくても開発できそうです。」

先生

「最初は細かい操作よりも、仕組みを理解することが大切です。 QuarkusとDockerの連携を知っておくと、 実務でもすぐに応用できるようになりますよ。」

生徒

「これからはDockerを前提にした開発にも挑戦してみます。 Quarkusなら安心して始められそうです。」

先生

「その意気です。少しずつ経験を積みながら、 コンテナ開発の理解を深めていきましょう。」

カテゴリの一覧へ
新着記事
New1
Java
JavaのStringBufferクラスを徹底解説!スレッド安全な文字列操作の仕組みと使い分け
New2
Micronaut
Micronautで非同期HTTP処理を行う方法!リアクティブ対応の基礎知識
New3
Micronaut
Micronautの@Prototypeとは?新しいインスタンスを生成するスコープの基本
New4
Quarkus
QuarkusのCDIスコープを完全理解!@ApplicationScopedと@RequestScopedを初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkus入門!GitHub ActionsでCI/CDパイプラインを構築して自動ビルドを実現する方法
No.2
Java&Spring記事人気No2
Java
Javaのコンパイルと実行の流れを解説!JVM・JDK・JREの違いも初心者向けに整理
No.3
Java&Spring記事人気No3
Micronaut
Micronautのルーティング設定ガイド!プレフィックス付与とAPIバージョニングの基本
No.4
Java&Spring記事人気No4
Java
Java Optional ifPresentの使い方を徹底解説!nullチェックをスマートに省略する方法
No.5
Java&Spring記事人気No5
Micronaut
Micronautのフィルタ徹底解説!HTTPリクエスト共通処理をスマートに追加する方法
No.6
Java&Spring記事人気No6
Quarkus
QuarkusのCI/CD入門!GitHub Actionsで自動デプロイを実現する方法
No.7
Java&Spring記事人気No7
Java
Java Functionインタフェースの使い方を完全ガイド!map変換と処理チェーンを理解する
No.8
Java&Spring記事人気No8
Java
JavaのString比較を徹底解説!equalsと==の違い、初心者が陥る罠とは?