Javaの基礎知識(実践編)

【Javaの基礎知識】DockerでMySQL環境構築|Javaから接続する手順

Dockerを使えば、Javaに限らずあらゆる環境での開発が簡単になります。ローカル環境にMySQLをインストールせずに、手軽にデータベースを利用できるのも大きなメリットです。本記事では、Java開発向けにDockerを活用したMySQL環境の構築方法を詳しく解説します。

Javaの基礎知識

Java の基礎知識(実践編)
📌 現場で使える力を。アプリ制作で学ぶ実践型トレーニング
└─【Javaの基礎知識(実践編)】現場で使えるWeb・DB・GUI開発の実践構築
  ├─【Javaの基礎知識】Javaとは? Javaの基本概要をわかりやすく解説!
  ├─【Javaの基礎知識】Eclipse+TomcatでWeb開発環境を構築!
  ├─【Javaの基礎知識】Todoアプリで学ぶ!ServletとJSPの基礎とWebアプリ開発
  ├─【Javaの基礎知識】DockerでMySQL環境構築|Javaから接続する手順
  ├─【Javaの基礎知識】Todoアプリで学ぶ!JDBCを使ったDB連携と実装手順
  ├─【Javaの基礎知識】Todoアプリで学ぶ!データ更新処理とコネクションプールの使い方
  ├─【Javaの基礎知識】設定地獄はもう嫌!シンプルな共通ログ出力クラスを作ってみた
  ├─【Javaの基礎知識】JavaFXでGUIアプリ作成入門!基本から実践まで!
  ├─【Javaの基礎知識】JavaFXで作るシンプルなエディタアプリ|保存・開く・編集
  ├─【Javaの基礎知識】Spring Boot環境構築&プロジェクトセットアップ完全ガイド!
  ├─【Javaの基礎知識】Spring BootでシンプルなMVC構造のWebアプリを作る
  ├─【Javaの基礎知識】Spring Boot × MySQL!DB接続からCRUD実装まで解説!| 
  ├─【Javaの基礎知識】Spring Bootアプリの実行環境とデプロイ手順
  |
  └─共通DBアクセスクラス
    📌 SQL記述を最小化、業務ロジックに集中できる共通基盤
    ├─ORMにはうんざり!第1回:シンプルなJava DBアクセスクラスを考えてみた
    ├─ORMにはうんざり!第2回:共通DBアクセスクラスでSQLを直感的に操作するJava設計
    ├─ORMにはうんざり!第3回:JavaでDB接続の最適化と共通プールの構築
    ├─ORMにはうんざり!第4回:Java共通ログ出力とsystem.xml設定の構成を解説
    ├─ORMにはうんざり!第5回:例外の闇を断つ 堅牢なJavaエラーハンドリングとログ設計
    └─ORMにはうんざり!第6回:Java共通DBアクセスクラスの実用例で脱フレームワーク

DockerでMySQL環境を構築するメリット

Dockerを活用すれば、MySQL環境を手軽に構築でき、開発やテストの効率が大幅に向上します。ローカル環境に直接MySQLをインストールする必要がなく、環境の違いによるトラブルを回避できるのも大きなメリットです。また、コンテナ化することで、どのOSでも統一された環境を再現でき、チーム開発やCI/CDの運用にも適しています。ここでは、Dockerを使ってMySQL環境を構築するメリットについて詳しく解説します。

Dockerを使うと何が便利なのか?

Dockerを使うと、MySQL環境をすばやく用意できるだけでなく、ホストOSのカーネルリソースを共有して動作するため仮想マシンよりも軽量で起動が速いのが特徴です。環境の違いによるトラブルを回避しつつ、開発やテストを効率的に進められるのがDockerの大きなメリットです。

DockerでMySQL環境を構築するメリット

  • 環境構築が簡単:コマンド一発でMySQL環境を立ち上げられる。
  • OSに依存しない: Windows、macOS、Linux問わず同じMySQL環境を用意できる。
  • 再現性の高い環境を作れる: チーム内・CI/CDで同じ環境をすぐに再現可能。

ローカルインストールとDockerの比較

項目ローカルインストールDocker
セットアップの手間高い(パッケージ管理が必要)低い(コンテナ起動のみ)
環境の再現性低い(設定が環境依存)高い(イメージで統一)
削除と再構築面倒(手動アンインストール)簡単(コンテナ削除・作成)

Docker管理のチートシート

Dockerは、これまでの開発環境を一変させるほどパワフルな環境構築ツールです。 アプリケーションの動作環境を手軽に構築・共有できるため、近年の開発現場ではほぼ必須の技術となっています。

ただし、Dockerの概念や仕組みを完全に理解するには、それこそ本一冊分の知識が必要になるほど膨大な内容になります。本記事では、Dockerの詳細な説明は触れる程度に留め、Dockerを使ったMySQL環境の構築と管理に焦点を当てて解説します。

もしDockerそのものに興味がある方は、Kubernetesコンテナオーケストレーション技術 について学ぶことをおすすめします。 また、AWSやGCPなどのクラウド環境では、Dockerの技術は非常に重宝されており、Dockerエンジニアの需要が高く、求人も多い 状況です。

このチートシートを活用しながら、Dockerの基本操作を学び、開発環境を効率的に管理できるようになりましょう!

Dockerの基本情報

用途コマンド説明
Dockerのバージョン確認docker --versionインストールされているDockerのバージョンを表示
Dockerが正常に動作しているか確認docker run hello-worldテスト用のコンテナを実行し、動作確認
Dockerの全体情報を表示docker infoインストールされたDockerの設定やリソース情報を表示

Docker環境のセットアップ

用途コマンド説明
Dockerのインストール(Ubuntu)sudo apt install docker.ioUbuntuにDockerをインストール
Dockerを起動sudo systemctl start dockerDockerデーモンを開始
Dockerを有効化(再起動時も自動起動)sudo systemctl enable dockerDockerをOS起動時に自動実行

イメージの管理

用途コマンド説明
イメージを検索docker search mysqlDocker Hub から「mysql」を検索
イメージをダウンロードdocker pull mysql:latest最新のMySQLイメージを取得
ローカルのイメージ一覧を表示docker imagesダウンロード済みのイメージを一覧表示

コンテナの管理

用途コマンド説明
コンテナを作成&起動docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d mysqlMySQLコンテナを作成し、起動
コンテナを停止docker stop mysql-containerコンテナを安全に停止
コンテナを再起動docker start mysql-container停止したコンテナを再起動
コンテナ一覧を表示docker ps -a起動中&停止中のコンテナを一覧表示

ネットワークの管理

用途コマンド説明
既存のネットワークを表示docker network ls作成済みのDockerネットワーク一覧を表示
新しいネットワークを作成docker network create mynetwork名前「mynetwork」の新規ネットワークを作成
コンテナをネットワークに接続docker network connect mynetwork mysql-containerMySQLコンテナを「mynetwork」に追加

ボリュームの管理

用途コマンド説明
既存のボリュームを表示docker volume ls作成済みのボリューム一覧を表示
新しいボリュームを作成docker volume create mysql_data「mysql_data」という名前のボリュームを作成
ボリュームをコンテナにマウントdocker run -v mysql_data:/var/lib/mysql mysqlMySQLのデータを永続化するためにボリュームをマウント

Dockerのログ・デバッグ

用途コマンド説明
コンテナのログを表示docker logs mysql-containerMySQLコンテナのログを確認
リアルタイムでログを監視docker logs -f mysql-containerリアルタイムでログを確認(-f オプション)
コンテナ内に入るdocker exec -it mysql-container bashMySQLコンテナにアクセスし、内部でコマンドを実行

DockerとMySQLの基本設定

Dockerを利用すれば、MySQLの環境構築が驚くほど簡単になります。従来のようにローカル環境にMySQLをインストールして設定する必要がなく、Dockerコンテナを使うことでOSに依存せず、統一された開発環境を素早く構築できます。本セクションでは、Dockerのインストール手順から、MySQLコンテナの起動方法までを詳しく解説します。

WindowsでDockerをインストールする手順

Dockerは、コンテナを利用した開発環境を簡単に構築できるツールです。Windowsでは、Docker Desktop をインストールすることで、手軽にDockerを利用できます。本記事では、公式サイトからDocker Desktopをダウンロードし、インストールする方法を詳しく解説します。なお、Windows 10/11 の場合、WSL2(Windows Subsystem for Linux) または Hyper-V を利用する設定が必要になりますので、事前に確認しておきましょう。

  1. Docker公式サイトにアクセス
    以下のURLからDocker Desktop for Windowsをダウンロードします。
    👉 Docker公式サイト
  2. Windows用のDocker Desktopをダウンロード
    「Download for Windows」をクリック

  3. Docker Desktopをインストール
    インストールウィザードの指示に従い「Install」をクリックしてDockerのインストール完了後、PCを再起動
  4. Docker Desktopを起動
    Windowsのスタートメニューから「Docker Desktop」を起動後、Dockerのクジラアイコン🐳 が表示されることを確認する。
  5. Dockerが正常に動作するか確認
    ターミナル(PowerShell または コマンドプロンプト)で以下のコマンドを実行。

    docker --version

    バージョン情報が表示されればインストール成功

MacでDockerをインストールする手順

Dockerを利用すると、ローカル環境にソフトウェアをインストールせずに、簡単に開発環境を構築できます。Macでは Docker Desktop をインストールすることで、手軽にDockerを利用できます。本記事では、公式サイトからDocker Desktopをダウンロードし、インストールする方法を解説します。なお、Macには Apple Silicon(M1/M2) と Intelプロセッサ の2種類があるため、自分のMacに適したバージョンを選ぶ必要があります。

  1. Docker公式サイトにアクセス
    以下のURLからDocker Desktop for Macをダウンロードします。
    👉 Docker公式サイト
  2. Mac用のDocker Desktopをダウンロード
    「Download for Mac (Apple Silicon/Intel)」をクリック

    ダウンロードされた .dmg ファイルを開く
  3. Docker Desktopをインストール
    インストールウィンドウが開いたら「Docker.app」を「Applications」フォルダにドラッグ


  4. Docker Desktopを起動
  5. Dockerが正常に動作するか確認
    ターミナルを開き、以下のコマンドを実行。

    docker --version

    バージョン情報が表示されればインストール成功

LinuxでDockerをインストールする手順

Linuxでは、Dockerをネイティブ環境で動作させることができ、仮想化のオーバーヘッドが少ないため、軽量で高速なコンテナ環境を構築できます。本記事では、公式リポジトリを利用してDockerをインストールし、基本的な設定を行う方法を解説します。なお、ディストリビューションによってインストール方法が異なるため、Ubuntu / Debian系、CentOS / RHEL系 など、それぞれの環境に適した手順を選択してください。

  1. Docker公式サイトにアクセス
    以下のURLからLinux用のDockerをダウンロードします。
    👉 Docker公式サイト(Linux向け)
  2. ディストリビューションに応じたDockerを選択
    「Download for Linux」をクリック

  3. Dockerをインストール
    以下のコマンドを実行(例: Ubuntu)

    sudo apt install docker.io

  4. Dockerデーモンを起動
    以下のコマンドを実行。

    sudo systemctl start docker

  5. Dockerが正常に動作するか確認
    以下のコマンドを実行。

    docker --version

    バージョン情報が表示されればインストール成功
  6. 一般ユーザーでDockerを実行できるようにする(オプション)
    以下のコマンドで現在のユーザーを docker グループに追加。

    sudo usermod -aG docker $(whoami)

    追加後、一度ログアウトして再ログインすれば反映される

Docker Desktopの基本メニュー

Docker Desktopには、コンテナの管理やイメージの操作を簡単に行える直感的なメニューが用意されています。各メニューを活用することで、コンテナの起動・停止、イメージの管理、データの永続化、ビルドの実行など、開発に必要な操作をスムーズに行うことができます。本記事では、Docker Desktopの主要なメニューとその役割について解説します。

イメージは(筆者の環境がMac環境なため)Mac版docker desktopイメージです。

Docker Desktopの基本メニュー

  • Containers(コンテナ管理)
    - 実行中のコンテナを一覧表示し、起動・停止・削除が可能。
  • Images(イメージ管理)
    - ダウンロード済みのDockerイメージを管理し、新しいコンテナを作成できる。
  • Volumes(ボリューム管理)
    - コンテナのデータを永続化するためのストレージ領域を管理。
  • Builds(ビルド管理)
    - Dockerfileを使用したカスタムイメージのビルドを管理。
  • Docker Hub
    - 公式のDocker Hubと連携し、パブリック/プライベートリポジトリを管理。
  • Docker Scout(セキュリティ分析)
    - コンテナの脆弱性をチェックし、セキュリティ対策を提案。
  • Extensions(拡張機能)
    - 追加のプラグインをインストールしてDockerをカスタマイズ可能。

Docker環境の確認とコンテナ動作チェック

導入するコンテナのイメージ図

Dockerを開発環境として活用するために、これから 2つのコンテナを導入 します。

1つ目は、Dockerが正常に動作しているかを確認するためのテスト用コンテナ です。2つ目は、MySQLのデータベース環境を構築するためのミドルウェアコンテナ です。

まずは、Dockerが正しくインストールされているかを確認し、その後、MySQLのコンテナを起動してデータベース環境をセットアップします。起動確認用のコンテナは確認終了後に削除し、最終的にMySQLコンテナのみを永続化して運用 していきます。

  1. Dockerのバージョンを確認
    まず、Dockerが正しくインストールされているか確認するため、以下のコマンドを実行します。

    docker --version

    以下のようにDockerのバージョンが表示されれば、インストール成功です。

    Docker version 27.5.1, build g9ee40f

  2. Hello Worldコンテナ(1つ目)を実行して動作確認
    Dockerの基本機能が動作しているか確認するため、以下のコマンドを実行します。

    docker run hello-world

    成功すると、「Hello from Docker!」と表示され、コンテナが正しく起動・実行されたことが確認できます。
  3. Docker環境の詳細情報を確認
    Dockerの設定やリソースの情報を確認するため、以下のコマンドを実行します。

    docker info

    CPUやメモリの割り当て、ストレージ情報などが表示されます。
  4. MySQLコンテナ(2つ目)を起動してテスト
    Dockerを使ってMySQLのコンテナを起動し、正しく動作するか確認します。

    docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:latest

    実行後、以下のコマンドでコンテナが正常に起動しているか確認できます。

    docker ps

    MySQLのコンテナが一覧に表示されていれば、正常に動作しています。

Hello World コンテナを削除する方法

確認ように使用した「hello-world」コンテナは、残しておいても特に問題はありませんが、削除する場合は下記の手順で削除できます。

  1. 方法①: 手動で削除

    docker rm hello-world

    これで不要なコンテナを削除できます。
  2. 方法②: 実行後に自動削除(--rm オプションを使う)

    docker run --rm hello-world

    このオプションをつければ、「終了したら即削除」されます。

Dockerの仕組みとMySQLコンテナの動作原理

Dockerは、後述の「Docker Hub」からコンテナイメージをダウンロードして、コンテナ仮想化技術を利用してアプリケーションを実行する仕組みです。しかし、Win/MacではDockerが直接動作するわけではなく、内部的にLinuxの仮想マシン(VM)が動いており、その上でコンテナが実行 されています。

  • Win/MacはLinuxカーネルを持たないため、Docker Desktopは内部的に軽量なLinux VMを起動している。
  • コンテナ(MySQLなど)は、このLinux VMの上で動作し、windowsOS/macOSとは別の環境になっている。
  • ポートフォワード(例:3306:3306)を設定することで、Win/MacからMySQLコンテナへ接続できる。

MacとWindowsのDockerの動作比較

MacとWindowsでは、Dockerを動かす方法が異なります。特にWindowsでは、WSL2モードHyper-Vモードの2つの方法があります。

MacWindows(WSL2モード)Windows(Hyper-Vモード)
ホストOSmacOSWindowsWindows
Linuxカーネルの提供方法Linux VM(Docker Desktop内蔵)WSL2のLinuxカーネルHyper-VのLinux VM
Docker Engineの動作環境Linux VM内で動作WSL2(Linuxカーネル)上で動作Hyper-VのVM内で動作
パフォーマンス良好高速 & 省メモリ(推奨)比較的重い
メリットMac上でDockerが動かせるWindows上でネイティブなLinux環境が動く追加のセットアップ不要(ただし重い)
デメリットLinux VMが必要WSL2が有効でないと使えないHyper-Vが必要で、Windows Homeでは利用制限あり
  • MacとWindows(WSL2モード)は、どちらも「内部的なLinux環境」でDockerを動かしているので、動作原理はほぼ同じ!
  • WindowsのHyper-Vモードは、MacのDocker Desktop(Linux VMを使用)と同じ動作方式。
  • 現在の推奨環境は「WindowsならWSL2を利用、MacならDocker Desktop(Linux VM)」!

🔍 現在のDocker環境

現在のコンテナ情報は下記の通り。

  • Docker Engine: Win/MacのDocker DesktopがLinux VM内で動作
  • MySQLコンテナ: Linux VM内で実行中(Docker GUIでも確認可能)
  • ネットワーク: -p 3306:3306 を設定したことで、Macからアクセス可能
設定項目値(デフォルト)説明
コンテナ名mysql-containerコンテナを識別するための名前
MySQLバージョンlatest(最新版)公式の最新MySQLイメージを使用
データベース名なし(初期状態)デフォルトではデータベースは作成されない
ユーザー名rootMySQLの管理ユーザー(スーパーユーザー)
パスワードroot環境変数 MYSQL_ROOT_PASSWORD=root で設定
ポート3306:3306ローカルの3306ポートとコンテナの3306ポートを接続
データ永続化mysql_dataボリュームを /var/lib/mysql にマウント
ネットワークデフォルト特に指定しない場合は Docker のブリッジネットワークを使用

注意点:コンテナのデータはデフォルトでは保存されない

現在、MySQLコンテナは動作しているが、もし docker stop mysql-containerdocker rm mysql-container を実行すると、すべてのデータが消えてしまう。

データを永続化する方法

データを永続化するには、ボリュームを作成し、MySQLのデータディレクトリを紐づける。

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 -v mysql_data:/var/lib/mysql mysql:latest

MySQLコンテナを自動起動させる

Dockerを再起動するとコンテナが停止するため、常に起動するよう設定する。

docker update --restart always mysql-container

これでWin/Macを再起動しても、Dockerが起動すればMySQLコンテナも自動的に立ち上がる。

Docker Hubとは?

Dockerは、コンテナイメージを管理・配布するための公式リポジトリ「Docker Hub」を利用します。 Docker Hubには、MySQLやPostgreSQL、Nginxなどのミドルウェアが登録されており、誰でも簡単にダウンロードして利用可能 です。

例えば、MySQLの公式イメージは以下のようにして取得・実行できます。

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:latest

このコマンドを実行すると、Dockerは自動的に Docker Hub から MySQL の公式イメージを取得し、コンテナを作成します。

Docker Hubでイメージを検索する方法

Dockerでは、必要なソフトウェアをコンテナとして簡単に利用できます。しかし、どのようなイメージが利用可能なのかを知るには、Docker Hubで検索するのが最も便利です。

Docker Hubには、MySQLやPostgreSQL、Nginxなどの公式イメージをはじめ、さまざまなコンテナイメージが公開 されており、開発環境のセットアップを大幅に簡略化できます。

Docker Hubでイメージを検索する手順

ここでは、Docker Hubで目的のイメージを検索する方法を解説します。

  1. 🔍 1. Webで検索する
    Docker Hub の公式サイトで検索できます。
    👉Docker Hub(公式サイト)
    検索バーに「mysql」や「nginx」などのキーワードを入力すると、関連する公式イメージが表示されます。
  2. コマンドラインで検索する
    ターミナルで以下のコマンドを実行すると、利用可能なイメージを検索できます。

    docker search <キーワード>

    例えば、MySQL関連のイメージを検索したい場合は以下のように実行します。

    docker search mysql

    検索結果には、MySQLの公式イメージや、関連するカスタムイメージが表示されます。

Docker Hubで提供されている主なイメージ

用途イメージ名説明
データベースmysqlMySQLの公式コンテナ
postgresPostgreSQLの公式コンテナ
redisインメモリデータベース Redis
Webサーバーnginx軽量で高速なWebサーバー
httpdApache HTTP サーバー
プログラミング言語pythonPythonの実行環境(複数バージョンあり)
nodeNode.js の実行環境
openjdkJava(OpenJDK)実行環境
CI/CDツールjenkinsJenkinsの公式コンテナ
OSベースイメージubuntuUbuntuの公式イメージ
alpine軽量Linuxディストリビューション

Docker Hubの仕組み

Docker Hubは、世界中の開発者が作成したコンテナイメージを共有・管理できるプラットフォームです。

  • 誰かが「MySQLの環境」を作成 → Docker Hubにアップロード
  • 世界中の開発者が 「docker run mysql」 ですぐに環境を利用可能!
  • 公式イメージ(例: mysql, nginx)は、Dockerが品質管理している

公式イメージは「_」がついたURLになっており、例えば MySQL の公式イメージは以下のURLから確認できます。

MySQL 公式 Docker イメージ

Docker Hubを活用すれば、開発環境を手軽にセットアップできる ため、開発効率が大幅に向上します! 🚀

JavaアプリからMySQLに接続する(Mavenなし)

JavaアプリケーションからMySQLデータベースに接続するために、JDBC(Java Database Connectivity)を使用します。本記事では、Mavenを使用せずに、手動でMySQL JDBCドライバを追加して接続する方法を解説します。

MySQL JDBC ドライバのダウンロード

MySQLに接続するためには、JDBCドライバ( mysql-connector-java)が必要です。以下の公式サイトからダウンロードします。

▶ MySQL Connector/J ダウンロードページ(公式サイト)

ダウンロード時は、「Platform Independent」 を選択し、「Download」ボタンを押してください。

次の画面で「No thanks, just start my download.」をクリックすると、サインアップせずにダウンロードできます。

JDBCドライバとは?

JDBC(Java Database Connectivity)ドライバは、Javaアプリケーションとデータベースを接続するための橋渡し をするソフトウェアです。 JavaがMySQLやPostgreSQLなどのデータベースとやり取りするために、JDBCドライバを通じてSQLクエリを送受信します。

JDBCドライバの役割

  • Javaからデータベースに接続

    DriverManager.getConnection() を使って、データベースとの通信を確立
  • SQLクエリの送信・データ取得

    JavaからSQL文を実行し、データを取得・更新
  • 異なるデータベース間の互換性を確保

    MySQL、PostgreSQL、Oracleなど、異なるデータベースごとに専用のJDBCドライバが用意されている

JDBCドライバの種類

種類説明代表例
Type 1(JDBC-ODBCブリッジ)ODBCドライバを介してデータベースと接続する(古い方式)非推奨
Type 2(ネイティブAPIドライバ)OSごとのネイティブDBライブラリを使用(専用設定が必要)Oracle OCI
Type 3(ネットワークプロトコルドライバ)Javaプログラムが中間サーバーを通じてDBに接続JDBCネットワークドライバ
Type 4(純粋Javaドライバ)直接データベースと通信できる純粋なJavaドライバMySQL Connector/J、PostgreSQL JDBC

💡 通常、Type 4 の「純粋Javaドライバ」が推奨される!
MySQL用の mysql-connector-java も Type 4 JDBCドライバ!

MySQLのJDBCドライバ(MySQL Connector/J)

MySQLに接続するには、「MySQL Connector/J」 という専用のJDBCドライバが必要!

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.33</version>
</dependency>

JDBCドライバを正しく設定すれば、JavaからMySQLに簡単にアクセスできるようになります! 🚀

Eclipse に JAR ファイルを追加

ダウンロードした mysql-connector-java-8.0.x.jar を Eclipse のプロジェクトに追加します。

  1. 「TodoApp」プロジェクトを右クリックし、「プロパティ」を開く。
  2. 左のリストから「Javaのビルド・パス」を選択。
  3. ライブラリー」タブをクリック。
  4. 外部アーカイブの追加」ボタンをクリック。
  5. ダウンロードした mysql-connector-java-8.0.x.jar を選択。
  6. 適用して閉じる」をクリック。

JARファイルとは?

JAR(Java ARchive)ファイルは、Javaのクラスやリソースファイルをまとめた圧縮ファイル です。 Javaプログラムのライブラリやフレームワーク、実行可能なアプリケーションを一つのファイルにまとめるために使用されます。

JARファイルの主な用途

  • Javaのライブラリとして利用
    JDBCドライバ(mysql-connector-java.jar)のように、外部ライブラリを追加するために使われる
  • Javaアプリケーションの配布
    すべてのクラスとリソースをJARにまとめて、簡単に配布・実行できる
  • JavaのフレームワークやAPIの提供
    Spring、Hibernate などのフレームワークはJARファイルとして提供される

JARファイルの作成と実行

  1. JARファイルの作成
    Javaのソースコードをコンパイルし、JARファイルを作成するには以下のコマンドを使用します。

    javac MyApp.java // Javaのソースコードをコンパイル
    jar cvf MyApp.jar MyApp.class // クラスファイルをJARにパッケージ化

  2. JARファイルの実行
    JARファイルが実行可能な場合、以下のコマンドで実行できます。

    java -jar MyApp.jar

    JARがライブラリとして使用される場合は、クラスパス( -cp)を指定して実行します。

    java -cp mysql-connector-java.jar MyApp

JavaでMySQLに接続するサンプルコード

以下のコードは、JavaアプリケーションからMySQLデータベースに接続し、 users テーブルのデータを取得するサンプルです。

前回の記事のServletファイル作成手順を参照して「MySQLConnection」サーブレットファイルを作成してください。

package com.example.todo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySQLConnection {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/sampledb";
        String user = "root";
        String password = "root";

        // try-with-resources を正しく使用
        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {

            // whileブロックを適切に記述
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Servletファイルの作成手順については、前回の記事で詳しく解説していますので、そちらをご参照ください。

MySQLのデータベース作成

実行前に、接続先のデータベースが存在することを確認します。もし sampledb がない場合、以下の手順で作成してください。

  1. MySQLコンテナにログイン

    docker exec -it mysql-container mysql -u root -p

  2. データベースの作成

    CREATE DATABASE sampledb;

  3. usersテーブルの作成

    USE sampledb;
    CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100));

  4. サンプルデータの追加

    INSERT INTO users (name) VALUES ('Alice'), ('Bob'), ('Charlie');

Docker MySQLコンテナへ接続

MySQLコンテナへの接続が成功すると、エクリプスのコンソールへMySQLから取得したユーザー名が出力されます。

MySQLコンテナの管理方法

DockerでMySQLを運用する際、コンテナの起動・停止、データの永続化、ログやエラーの確認が重要になります。本記事では、MySQLコンテナの適切な管理方法について解説します。

コンテナの起動・停止

MySQLコンテナは、Dockerコマンドを使用して手動で起動・停止することができます。

MySQLコンテナを起動する

docker start mysql-container

このコマンドを実行すると、 mysql-container という名前のコンテナが起動します。

MySQLコンテナを停止する

docker stop mysql-container

このコマンドを実行すると、 mysql-container を安全に停止できます。

起動中のコンテナを確認する

docker ps

現在動作しているコンテナの一覧が表示されます。

すべてのコンテナ(停止済みも含む)を確認

docker ps -a

停止したコンテナも含め、すべてのコンテナを一覧表示します。

データの永続化設定

Dockerコンテナはデフォルトでは一時的なストレージを使用するため、コンテナを削除するとMySQLデータも失われてしまいます。データを永続化するためには、ボリューム を設定します。

ボリュームを利用したMySQLコンテナの作成

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 -v mysql_data:/var/lib/mysql mysql:latest

このコマンドでは、 -v mysql_data:/var/lib/mysql を指定することで、MySQLデータをホスト側のボリューム mysql_data に保存し、コンテナ停止後もデータを保持できます。

既存のMySQLコンテナのデータを永続化する

すでに作成したMySQLコンテナのデータを永続化したい場合、コンテナのデータディレクトリを手動でバックアップし、新しいコンテナでマウントできます。

docker cp mysql-container:/var/lib/mysql ./mysql_backup

このコマンドで、コンテナ内のデータをホスト側にコピーし、新しいコンテナでボリュームとしてマウントできます。

MySQLのログやエラーチェック

MySQLのエラーログやコンテナの動作ログを確認することで、問題発生時に迅速な対応が可能になります。

MySQLコンテナのログを確認する

docker logs mysql-container

このコマンドを実行すると、MySQLコンテナの標準出力に記録されたログが表示されます。

リアルタイムでログを監視する

docker logs -f mysql-container

オプション -f をつけることで、リアルタイムでログを監視できます。

MySQLのエラーログを確認する

MySQLのエラーログは通常、 /var/log/mysql/error.log に記録されます。コンテナ内で以下のコマンドを実行すると、エラーログを確認できます。

docker exec -it mysql-container cat /var/log/mysql/error.log

この管理方法を活用すれば、MySQLコンテナを安全かつ効率的に運用できます! 🚀

JDBCの基本を理解したら、実際にTodoアプリでデータベース連携を行う手順を学び、手を動かして理解を深めていきましょう。JavaとMySQLを使ってデータの追加・取得・削除を行う実践力を身につけることができます。

【Javaの基礎知識】JDBCを使ったTodoアプリのDB連携と実装手順

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-Javaの基礎知識(実践編)