「DockerでMySQL環境を構築したい」
「実際にアプリケーションを起動してみたい」
Dockerのインストールに成功した人は、次のステップとしてコンテナを利用したデータベース操作に進もうとしているのではないでしょうか。
DockerでMySQL環境を構築するところまでは比較的簡単ですが、アプリに接続して操作する場合は関係する機能を調節しながら作業する必要があります。
そこで本記事ではSpring BootによるWebアプリ開発の経験があるみずがめが以下の内容を紹介します。
- MySQLを操作する前に知っておきたい3つのこと
- H2データベースダンプファイルの取り方
- DockerでMySQLを使うために必要な7つのフォルダとファイル
- MySQLにダンプファイルを流し込む方法
この記事を最後まで読むことで、Dockerを利用したMySQLの設定方法と代表的なエラーの修正方法がわかります。
記事後半では、貼り付けて実行できるサンプルコードを多数掲載しているため、ぜひご活用ください。
この記事では自分のパソコンで作成することを前提にコードを紹介しています。ネットにサービスを公開する場合は、自己責任で行ってください!
これからDockerを入れようと考えている人は、みずがめが執筆した「DockerをWindowsにインストールする方法7STEP!具体的なコードも紹介」を参考にするとスムーズに設定できます。
DockerにMySQLを流し込む前に知っておきたい3つのこと
DockerにMySQLを入れるには、作業を始める前に知っておくべきことがあります。
以下の3つを押さえておきましょう。
- ダンプファイル
- JARファイル
- PowerShell
どんな役割を持っているのかを知っておけば、スムーズにMySQLを設定し操作できます。
1.ダンプファイル
ダンプファイルとは、データの内容をそのままテキストで保存したファイルです。
データベースのダンプファイルは、行と列の部分(テーブル)+中のデータをすべて保存するため、バックアップデータとして扱われます。
ファイルの中身はメモ帳やサクラエディタなどで確認が可能です。
ダンプファイルが1つあればデータベースが再構成できるため、データを移動させるときによく活用されます。
2.JARファイル
JARファイルは、Javaで書かれた複数のファイルを1つの圧縮ファイル(容量を少なくしたファイル)にまとめたものです。
作成したJARファイルは、別のWebアプリやシステムに部品として組み込めます。
たとえば、Dockerのイメージ(コンテナの基になるファイル)に組み込めば、Javaのバージョン違いやライブラリの違いによる不具合を無視しても稼働させられます。
JARファイルの拡張子は「.jar」です。jarファイルとも表記されますが、意味は同じです。
3.PowerShell
PowerShellはWindowsに最初から搭載されているコマンドシェル(テキストを入力してコンピューターOSを操作するもの)です。
WindowsでDockerを操作する場合はPowerShellが基本です。Dockerをダブルクリックして起動しておき、PowerShellで起動や停止コマンドを入力することでコンテナを操作します。
DockerでMySQLを使う3つの工程!
Dockerを使ってMySQLのコンテナを作成し、データを移行するには以下の手順を踏みます。
- ダンプファイルを作成して修正
- フォルダ・ファイルの追加・修正
- ダンプファイルを引っ越し先に流し込む
データベースのダンプファイルは作成した後、MySQL用に修正する必要があります。
DockerをMySQLに流し込むダンプファイルの準備4STEP
現在使っているデータベースからダンプファイルを作成して、データの引っ越し準備をします。
具体的な流れは以下のとおりです。
- H2データベースのコンソール画面で操作
- データを入力してダンプファイルを作成
- 作成したダンプファイルを確認
- ダンプファイルをコピーして編集
コピー元はバックアップ用のデータとしてそのままにしておきます。ここれでH2データベースをもとに具体的な手順を紹介します。
なお、みずがめが執筆した「Spring BootでH2データベースを使う方法5STEP!Eclipseで解説」では、H2データベースを実装して操作までの手順を解説しています。
この記事ではみずがめが作成したSpring BootアプリのH2データベースを活用して解説しているため、ぜひご活用ください。
1.H2データベースのコンソール画面で操作
H2データベースでは、コンソール画面を立ち上げて団部ファイルを作成します。

Eclipseを立ち上げてください。

「CafeOrder[boot][devtools]」を選択します。「▷」をクリックして実行してください。

Google Chromeを起動します。

「http://localhost:8080/h2-console」と入力してください。「/h2-console」の部分は、データベースを管理するシステムの場所を示します。

設定したユーザー名とパスワードを入力し、コンソール画面を開きます。

上画像はコンソール画面です。
2.データを入力してダンプファイルを作成
実際のアプリを捜査してダンプファイルを作成します。

アプリのメイン画面を表示します。みずがめの場合は「http://localhost:8080/order」と入力しています。

注文フォームを操作してデータベースに記録します。

画面が変化したらコンソール画面に移動してください。

以下のコードを上画像の「①貼り付け」に入れて、中身を確認します。
SHOW TABLES;
SELECT * FROM ORDERS;
実行を押すと、注文データが見られます。表示されたらダンプファイルを作成しましょう。

ダンプを出すコードを追加し、実行します。以下のコードを貼り付けてください。
SCRIPT TO 'C:/temp/h2dump.sql';
上記のコードは、Cドライブ直下にある「temp」の中に「h2dump.sql」という名前のダンプファイルを作成する命令です。
3.作成したダンプファイルを確認
作られたダンプファイルを確認します。

画像のように、Windowsのタスクバーにあるエクスプローラーを起動します。すると、メニュー画面が表示されます。

「PC」の中にある、Cドライブを意味する「Windows」をクリックします。この部分はパソコンによって異なり「Windows-SSD」と書かれてる場合もあります。

みずがめの場合は古いパソコンのため、Windows8と表示されています!
Cドライブの中に入ると「temp」と表記されたファイルがあります。ダブルクリックしてください。

「h2dump.sql」というファイルを確認できます。
4.ダンプファイルを複製して編集
確認できたダンプファイルをコピーしてください。

「h2dump.sql」の上にマウスカーソルを合わせて、右クリックして項目を表示させます。

「コピー(C)」をクリックします。

「h2dump.sql」の下にある空白エリアでマウスを右クリックし「貼り付け(P)」を選択します。「temp」ファイル内にダンプファイルのコピーを追加します。

「h2dump – コピー」が作成されました。2つのダンプファイルのうち、1つは保存用として残してください。今回は「h2dump.sql」を保存用にします。
「h2dump – コピー.sql」をMySQLに流し込むファイルに変えていきます。

「h2dump – コピー.sql」の上でクリック(ダブルクリックするとファイルが開くため、1秒ほど間を開けてクリックするといい)すると、名前部分を選択している状態になります。

「h2dump_adjusted.sql」と入力します。

名前が変わりました。

「h2dump_adjusted.sql」の上で右クリックするとメニュー画面が開きます。「プログラムから開く(H)」を選択するとさらに右側に選択画面が拡張されます。
「メモ帳」を選択してください。

「h2dump_adjusted.sql」の中身が確認できます。このままMySQLに入れてしまうと、命令文の違いにより正しく読み込まれないため、修正していきます。
以下の文を参考に修正するか、わからない場合はそのまま貼り付けてください。
DROP TABLE IF EXISTS ORDERS;
CREATE TABLE ORDERS (
ID BIGINT NOT NULL AUTO_INCREMENT,
CREATED_AT TIMESTAMP(6) NULL,
ITEM VARCHAR(255) NULL,
QUANTITY INT NOT NULL,
PRIMARY KEY (ID)
);
INSERT INTO ORDERS (ID, CREATED_AT, ITEM, QUANTITY) VALUES
(1, '2025-12-10 11:35:55.295305', 'tea', 8);
「CREATE TABLE ORDERS」はデータベースの構造を指定するコードです。「INSERT INTO ORDERS 」は実際のデータを示しています。

上画像は修正したあとのダンプファイルです。

編集したら「ファイル(F)」から「上書き保存(S)」をして閉じましょう。これでダンプファイルは作成終了です。
DockerでMySQLを使う準備!7つのフォルダ・ファイルの追加修正
DockerでMySQLを使うにはWebアプリにフォルダ・ファイルを追加する必要があります。
追加するものは5つ、修正するものは2つです。
| 追加・編集 | フォルダ・ファイル | フォルダ・ファイルの役割 | 配置する場所 |
|---|---|---|---|
| 追加 | secrets | 秘密情報を入れる | ルートプロジェクト直下 |
| 追加 | entrypoint.sh | コンテナ起動時にパスワードやアクセス権限を設定 | ルートプロジェクト直下 dockerフォルダ内 |
| 追加 | Dockerfile | Dockerのイメージを作るレシピ | ルートプロジェクト直下 |
| 追加 | docker-compose.yml | コンテナ情報を決定する | ルートプロジェクト直下 |
| 編集 | application.properties | Spring Boot アプリの設定ファイル | src/main/resourcesの中 |
| 編集 | .gitignore | バージョン管理ツールに保存するのを避ける | ルートプロジェクト直下(Eclipseでは見えない) |
| 追加 | .dockerignore | Dockerに機密情報をコピーされるのを防ぐ | ルートプロジェクト直下(Eclipseでは見えない) |
フォルダ・ファイルを作成するときは、名前の間違いに気を付けましょう。

ルートプロジェクトとは、最上位のフォルダを指します!
1.secretsを追加
secretsフォルダとはパスワードといった機密情報を格納するフォルダで、セキュリティレベルを上げるために作成されます。今回は2つのテキストファイルをsecretsフォルダに格納します。

Eclipseの画面を開いてください。

secretsフォルダを追加するには、ルートプロジェクトの上でマウスカーソルを合わせて右クリックします。みずがめの場合は「CafeOrder」がルートプロジェクトです。

「新規(W)」を選択し、右に展開された項目の中から「フォルダー」を選択してください。

親フォルダがルートプロジェクトであることを確認します。「フォルダ名(N):」に「secrets」と入力して「完了(F)」を押します。

作成された「secrets」で右クリックして「新規(W)」を選択します。
表示された「ファイル」をクリックしてください。

親フォルダが「CafeOrder/secrets」であることを確認します。「ファイル名(M)」に「mysql_password.txt」と入力してください。

テキストファイルが追加されます。

「mysql_password.txt」をクリックします。

タブが切り替わります。パスワードを1行だけ記入してください。
みずがめは、以下のパスワードを設定しました。
myfuture!6479
もう1つテキストファイルを作成します。

「secrets」で右クリックしてください。

親フォルダを確認してから「ファイル名(M):」で「mysql_root_password.txt」と入力します。

タブが切り替わったら、パスワードを1行だけ入力します。
みずがめは以下のパスワードを設定しました。
rootfuture!4086
2.entrypoint.shを追加
entrypoint.shとは、Dockerのコンテナ起動時、はじめに実行される命令文です。
secretsを読み取ってパスワードをセットしたり、初期処理(データの引っ越しや管理者から1つ下の開発者へアクセス権限の変更)を担当したりします。

ルートプロジェクトを右クリックします。

親フォルダがルートプロジェクトであることを確認し「フォルダ名(N):」に「docker」と入力します。

ルートプロジェクト直下に「docker」が作成されました。

「docker」を右クリックします。

「新規(W)」を選択し「ファイル」をクリックしてください。

親フォルダが「CafeOrder/docker」であることを確認して「ファイル名(M):」に「entrypoint.sh」と入力します。

ファイルが作られます、以下の文を貼り付けてください。
#!/bin/sh
set -eu
if [ -n "${DB_PASS_FILE:-}" ] && [ -f "$DB_PASS_FILE" ]; then
export DB_PASS="$(tr -d '\r\n' < "$DB_PASS_FILE")"
fi
exec java -jar /app/app.jar "$@"
Windowsの場合、命令に余分なコード(\r\n)が混じるため、除去する処理を入れています。
最後の「exec java -jar /app/app.jar」のexecは実行するという意味で、正しく動作させる書き方です。

貼り付けて赤線マーカーが表示されなければ次に進みます。
3.Dockerfileを追加
Dockerfileとは、Dockerのイメージを作るためのレシピです。

ルートプロジェクトを右クリックします。

「新規(W)」を選択し「ファイル」をクリックしてください。

親フォルダがルートプロジェクトであることを確認します。

ルートプロジェクト直下に「Dockerfile」が作成されました。

タブを切り替えて、以下のコードを貼り付けてください。
FROM maven:3.9.4-eclipse-temurin-21 AS build
WORKDIR /work
COPY . .
RUN mvn -B -DskipTests package
FROM eclipse-temurin:21-jre-jammy
WORKDIR /app
COPY --from=build /work/target/*.jar app.jar
COPY docker/entrypoint.sh /entrypoint.sh
RUN sed -i 's/\r$//' /entrypoint.sh && chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
上記のファイルは2つの段階に分かれて処理しています。
別名マルチステージビルドと呼ばれており、データ量が少ないJARファイルをコンテナに組み込むため、データ容量を抑えながらエラーが起きにくくなる方法です。
1段目は、Dockerのイメージに名前を付けてJARファイルを作成します。
2段目は、JARファイルとコンテナ起動時に必要なファイルだけ持ってきて、小さなイメージを作ります。
各行の意味は以下のとおりです。
| 該当する行数 | コードの意味 |
|---|---|
| 1行目 | Docker HubにあるJava実行環境でイメージを作成し「build」という名前を設定 |
| 2行目 | 作成した「build」の中にある「/work」でこれから作業すると明言 (ない場合は自動で作ってくれる) |
| 3行目 | 開発者のパソコンにあるアプリデータを「/work」にすべてコピー |
| 4行目 | JARファイルを作成し「build」の「/work」内に格納 |
| 5行目 | 空欄 ここから下が2段階目 |
| 6行目 | 実行専用の小さいイメージを名前なしで作成(前のbuildは消滅) イメージの名前はDocker実行時に開発者が手動で付ける |
| 7行目 | 「/app」でこれから操作する場所を指定 「/app」は前回の「build」内とは違う場所 |
| 8行目 | 「build」の中にあるJARファイルだけをコピー |
| 9行目 | Dockerにコピーしたものから「entrypoint.sh」のファイルだけを実行専用のコンテナルートフォルダ直下にコピー |
| 10行目 | 改行するコードを「\r\n」から「\n」に変更 「chmod +x」で正しく実行できる状態に設定 |
| 11行目 | 最初に「entrypoint.sh」が実行されるよう設定 |
フェーズを2つにすることで、余分なデータを排除しています。コンテナ内にWebアプリを組み込んているため、システムのバージョンによるエラーを抑えられます。

赤色マーカーが出なければ次に進みます。
4.docker-compose.ymlを追加
docker-compose.ymlは、どのシステムを使うのか決めるファイルといえます。

ルートプロジェクトで右クリックします。

「新規(W)」を選択し「ファイル」をクリックします。

親フォルダがルートプロジェクトであることを確認します。「ファイル名(M):」に「docker-compose.yml」と入力します。

「docker-compose.yml」が作られます。以下のコードを貼り付けてください。
services:
mysql:
image: mysql:8.0
environment:
MYSQL_DATABASE: cafedata
MYSQL_USER: cafe_app
MYSQL_PASSWORD_FILE: /run/secrets/mysql_password
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password
ports:
- "3307:3306" //みずがめのパソコンでは3306が使われているため変更
volumes:
- dbdata:/var/lib/mysql
secrets:
- mysql_password
- mysql_root_password
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- mysql
environment:
DB_USER: cafe_app
DB_PASS_FILE: /run/secrets/mysql_password
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/cafedata?useSSL=false&serverTimezone=UTC
secrets:
- mysql_password
ports:
- "8080:8080"
secrets:
mysql_password:
file: ./secrets/mysql_password.txt
mysql_root_password:
file: ./secrets/mysql_root_password.txt
volumes:
dbdata:
上のコードではsecretsフォルダにあるデータを使ってパスワードを活用しています。
5.application.propertiesを修正
すでにあるapplication.properties(アプリ固有の設定ファイル)をMySQLに適した形に修正していきます。

「src/main/resources」を展開し「application.properties」を選択します。

データベースに関係するコードを修正していきましょう。

H2データベースを使っていた場合、上画像の3か所を修正する必要があります。
まず、以下の2つを削除してください。H2データベースの設定のため不要です。
| 修正する場所 | 修正方法 |
|---|---|
| spring.datasource.driver-class-name=org.h2.Driver | 削除 |
| spring.jpa.database-platform=org.hibernate.dialect.H2Dialect | 削除 |
| spring.jpa.hibernate.ddl-auto=update | updateからnoneに変更 |
以上の3か所を修正すれば、データベース接続に関するエラーを回避できます。

上画面は修正後の状態です。以下に修正後のコードを掲載します。
spring.application.name=CafeOrder
# H2(開発用:in-memory)
spring.datasource.url=jdbc:h2:mem:testdb
# 重要な情報
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}
# Hibernate / JPA
# 開発中は下を使う(テーブル自動作成)。通常では validate/none にする。
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
# H2 コンソール(開発時のみ有効に)
spring.h2.console.enabled=false
spring.h2.console.path=/h2-console
6.「.gitignore」を修正
「.gitignore」は、GitHubといったバージョン管理システムの対象外にするファイルを指定するものです。パスワードや個人情報といった機密情報を書き込んだファイルを指定します。
Eclipse上では見れない設定になっているため、手動で追加する方法を紹介します。

Windowsのタスクバーから「エクスプローラー」を起動します。

Eclipseがある場所に移動します。
みずがめはCドライブ直下にEclipseを入れているため「PC」の「Windows」を選択しています。

Eclipseが見つかりました。クリックします。

「workspace」をクリックします。

ルートプロジェクトの「CafeOrder」を選択します。

ルートプロジェクト直下に「.gitignore」があることを確認してください。

「.gitignore」の上で右クリックします。

「プログラムから開く(H)」を選択します。

使用するプログラムが表示されます。「メモ帳」を選択し、チェックを外した状態で「OK」をクリックします。

「.gitignore」の中身が確認できます。

機密情報が書かれている「secrets/」「.secrets/」「.env」を追加してください。

今回envファイルは作っていませんが入れておきましょう!
以下に、コード全体を載せます。
HELP.md
target/
.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### local secrets and env###
secrets/
.secrets/
.env
7.「.dockerignore」を追加
「.dockerignore」は、Dockerのコンテナにコピーしてほしくないファイルを指定するファイルです。
個人情報やパスワードを扱っているファイルを設定します。
書き方は「/gitignore」とほぼ同じなため、コピーして名前だけ「.dockerignore」に変えてもいいでしょう。
今回は1からファイルを作成する方法と、余分なものを省略した書き方を紹介します。
まず「/gitignore」と同じ場所に移動してください。

上画像のように空白エリアで右クリックします。

「新規作成(W)」を選び「テキストドキュメント」をクリックします。

作られたファイルの名前を変更します。

「.dockerignore」と入力してください。

拡張子の変更すると開けないリスクがあると警告されます。「はい(Y)」を選んでください。

「.dockerignore」が作られました。メモ帳で開いてから、以下のコードを貼り付けてください。
# ビルド成果物
/target
/*.jar
# Git
.git
.gitignore
# シークレット
secrets/
secrets/*
# IDE
.classpath
.project
.settings/
*.iml
.idea/
# OS / その他
.DS_Store
Thumbs.db
tmp/
「secrets/*」と記入するとパスワードが書かれているファイルをコピー対象から外してくれます。

貼り付け終わったら左上のメニューから「上書き保存(S)」して閉じます。
DockerでMuSQLを使う最後の工程!ダンプファイルを流し込む5STEP
ダンプファイルを引っ越し先に入れるには以下の順序で行います。
- Dockerの起動
- コンテナをビルド
- パスワードで承認(ローカル向けの対策)
- 動作確認
- コンテナにダンプデータを注入
PowerShellを起動してダンプファイルを入れましょう。
1.Dockerの起動
Dockerを起動したあとPowerShellを立ち上げます。

ディスクトップのアイコンをダブルクリックします。

Dockerが立ち上がりました。PowerShellを起動しましょう。

ルートプロジェクトがある場所に移動してください。

「workspace」を選択します。

ルートプロジェクトがありました。クリックして中身に入ります。

CafeOrderフォルダに入った状態で、上画像の位置に「PowerShell」と入力し「Enterキー」を押します。

画像のように「~~\CafeOrder> _」と表示されたら次に進みましょう。
2.コンテナをビルド
Dockerでコンテナをビルド(必要なファイル一式を作成)します。Dockerのイメージにアプリの情報を組み込むため、JARファイルを作成するコマンドを入力してください。
# 1) (オプション)ローカルで jar を作るなら
.\mvnw package -DskipTests
上記のコードをコピーし、PowerShell上で右クリックすると貼り付けが完了します。

上画像は貼り付けが終わった段階です。「Enterキー」を押します。

JARファイルが作成されました。

10秒ほど待つと、実行結果が表示されます。上画像の「リリース・バージョン21はサポートされていません」とは、パソコンにあるJDKがJava21をサポートしていないという警告です。
Dockerfileで「maven:3.9.4-eclipse-temurin-21-alpine」と書いているため、そのまま続けてください。
以下のコードをすべて貼り付けて「Enterキー」を押します。
# 2) Docker Compose でビルド&起動(初回は --build 推奨)
docker compose up --build -d
# 3) 起動確認
docker compose ps
docker compose logs -f app
docker compose logs -f mysql
PowerShellは1行ごとに処理され結果が返ってくる仕様ですが、まとめてコードを貼り付けて機能します。

上画像は処理中のものです。

10秒ほど待つと、必要なデータをインターネットからダウンロードしてくれます。

上画像はビルド中の画像です。

そのまま、「~~CafeOrder> _」と戻ってくるなら問題ありませんが、多くは処理が進まない状態で止まります。
5分経っても画面が変わらない状態が続いたら、PowerShell上でCtrl+Cを押し、処理を中断(入力を受け付ける状態にする)してください。
その段階で表示されているビルドログを確認します。
ログを確認する場合は、PowerShellに表示されたログをすべてコピーし、Wordやドキュメントに貼り付けてError箇所を確認するのが見やすくておすすめです。
ほとんどのエラー原因は、今回作成したファイルの不備になります。漏れや抜けがないか確認して修正してください。
ログの中に「Public Key Retrieval is not allowed」とあったなら、MySQLの承認システムで問題が起きています。パスワードがセットされていないため発生したエラーです。
次にパスワードを設定します。
3.パスワードで承認(ローカル向けの対策)
MySQLがデフォルトの認証(caching_sha2_password)を使おうとして接続を拒否されると「Public Key Retrieval is not allowed」と表示されます。
コンテナの中に入って手動で実行する方法がシンプルでおすすめです。

上画像のように入力を受け付ける状態に戻ります。
以下のコードを貼り付けてください。
# PowerShell
#コンテナに入る
docker exec -it $mysqlContainer bash
貼り付けると「bash-5.1#」という表示になります。

上画像の状態になったら、以下のコードを貼り付けます。exitの部分まで一気に進むため、1つずつ確認したい人は1行ごとに貼り付けてください。
# コンテナ内 (bash/sh)で実行
pw_app="$(tr -d '\r\n' < /run/secrets/mysql_password)"
pw_root="$(tr -d '\r\n' < /run/secrets/mysql_root_password)"
cat > /tmp/alter_user.sql <<SQL
ALTER USER 'cafe_app'@'%' IDENTIFIED WITH mysql_native_password BY '$pw_app';
FLUSH PRIVILEGES;
SQL
TMP_CNF=/tmp/my.cnf
printf "[client]\nuser=root\npassword=%s\n" "$pw_root" > "$TMP_CNF"
chmod 600 "$TMP_CNF"
mysql --defaults-extra-file="$TMP_CNF" cafedata < /tmp/alter_user.sql
# 後片付け
rm -f /tmp/alter_user.sql "$TMP_CNF"
# exit してホストに戻る
exit
上記のコードで承認方法が切り替わります。

「~~\CafeOrder> _ 」になったら成功です。コンテナから出ています。

docker compose restart app
上記のコードでアプリを再起動します。

コンテナがスタートしたと表示されれば成功です。
みずがめの場合は「Container cafeorder-app-1 Started」と表示されています。

docker compose ps
上記のコードを貼り付けてコンテナの状態を確認してください。

「STATUS」が「UP」となれば、MySQLが起動しています。
4.動作確認
Webアプリの動作を確認します。

制作したアプリのホーム画面を表示します。水がめの場合は「http://localhost:8080/order」です。

注文フォームが表示されました。Webアプリは問題なく起動しています。
5.コンテナにダンプデータを注入
立ち上げたコンテナにダンプデータを入れます。
PowerShellに以下のコマンドを入力してください。
#PowerShell
### mysql コンテナID を変数に入れる(正常なら短いIDが返る)
$mysqlContainer = (docker compose ps -q mysql)
# もし空ならサービス名を直接指定(みずがめの場合 "cafeorder-mysql-1" が使えます)
if (-not $mysqlContainer) { $mysqlContainer = "cafeorder-mysql-1" }
Write-Output "using container: $mysqlContainer"
上記のコードでダンプデータを入れます。

すべて一気に貼り付けると処理が3秒ほどで終わり、上画像のようになります。

### 2) パスワード読み込み(既に実行済みなら飛ばしてOK)
$apppw = (Get-Content .\secrets\mysql_password.txt -Raw).Trim()
上記のコードを貼り付けてください。

### 3-A) (おすすめ)PowerShell のパイプで直接流し込む方法
Get-Content "C:\temp\h2dump_adjusted.sql" -Raw |
docker exec -i -e MYSQL_PWD="$apppw" $mysqlContainer mysql -ucafe_app cafedata
上記のコマンドでダンプファイルを流し込みます。途中で分けずに貼り付けてください。

docker exec -e MYSQL_PWD="$apppw" -i $mysqlContainer mysql -ucafe_app cafedata -e "SHOW TABLES; SELECT COUNT(*) AS cnt FROM ORDERS;"
上記のコードでデータベースの中身を確認します。

中のデータが確認できれば成功です。

docker compose stop
最後に停止コマンドを入力して終了してください。
MySQLコンテナを使うには、Webアプリにファイルを複数追加した後、Dockerを起動してPowerShellを使う必要があります。
各ファイルで何を設定しているのか考えながら取り組んでみてください。




コメント