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

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アプリをDocker上で動かすための最小構成を作成します。まずはQuarkusプロジェクトのルートにDockerfileを作成します。Quarkusは「JVMモード」と「ネイティブモード」の二つのビルド方式がありますが、今回は一般的に使われるJVMモードのDockerfileを紹介します。


FROM eclipse-temurin:17-jre
WORKDIR /app
COPY target/quarkus-app/quarkus-run.jar /app/app.jar
CMD ["java", "-jar", "app.jar"]

このDockerfileを使うことで、どの環境でも同じQuarkusの実行環境を再現できます。またDockerイメージは軽量で、クラウドサービスにも展開しやすい構成になります。

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
Quarkus
Quarkusのフォーム認証を基礎から解説!初心者向けセキュリティ入門ガイド
New2
Micronaut
MicronautプロジェクトをGradleで管理する基礎!build.gradleの役割を解説
New3
Micronaut
LinuxでMicronautをセットアップする方法!パッケージ管理とGradle連携
New4
Java
Javaのswitch文を徹底解説!case・defaultの書き方と実例まとめ
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkusプロジェクト構成の基本を完全解説!初心者でも迷わない「どこに何を書くか」ガイド
No.2
Java&Spring記事人気No2
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.3
Java&Spring記事人気No3
Quarkus
Quarkusのセキュリティ基礎を初心者でもわかるように解説!
No.4
Java&Spring記事人気No4
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.5
Java&Spring記事人気No5
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.6
Java&Spring記事人気No6
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.7
Java&Spring記事人気No7
Java
Javaのboolean型の使い方を完全ガイド!真偽値と条件分岐の基本
No.8
Java&Spring記事人気No8
Micronaut
Micronautのアプリケーション起動が速い理由を初心者向けに解説