Skip to content

infra(compose): MySQL 初期化 + Flyway 起動確認 #215

Description

@win2cot

Phase 1 Setup 1-3: MySQL 初期化 + Flyway 起動確認

概要

Setup 1-1 の MySQL 8.4 コンテナに対し、Flyway migration が起動時に走り、webapi/src/main/resources/db/migration/V1.0.0_01__create_tables.sql が適用されることを確認する。

詳細仕様: docs/architecture/infrastructure-plan.md v5 §5.2。

背景

Phase 1 Sprint 0 で Flyway DDL を追加する(#83 / #84 等)。それを動かす前提として、現状の Flyway 設定が local Docker Compose の MySQL に対して機能するか検証する。

scaffold 段階で V1.0.0_01__create_tables.sql は存在(users / tasks テーブル作成)。これが migration として走るかが本 Issue の検証範囲。

実装内容

A. Flyway 設定確認

  • webapi/build.gradle の Flyway 依存(既存): spring-boot-flyway / flyway-mysql
  • webapi/src/main/resources/application.yml の Flyway 設定追加(Setup 1-4 と一部重複可、本 Issue では minimal config だけでも OK):
    spring:
      flyway:
        enabled: true
        url: ${DATASOURCE_URL}
        user: ${DATASOURCE_USERNAME}
        password: ${DATASOURCE_PASSWORD}
        locations: classpath:db/migration

B. env vars で接続情報を渡す方式の確認

ローカル起動例(WSL bash):

export DATASOURCE_URL=jdbc:mysql://localhost:3306/tasks?useSSL=false&allowPublicKeyRetrieval=true
export DATASOURCE_USERNAME=tasks_webapi
export DATASOURCE_PASSWORD=tasks_webapi_pw
./gradlew :webapi:bootRun

C. Flyway migration の動作確認

  • ./gradlew :webapi:bootRun 起動時に Flyway が走り、flyway_schema_history テーブルが作成される
  • V1.0.0_01__create_tables.sql が適用され、users / tasks テーブルが作成される
  • 再起動時には migration が skip される(idempotency 確認)

D.(任意)./gradlew :webapi:flywayMigrate 手動実行確認

Spring Boot 起動なしで Flyway 単体実行ができるか確認(application context が立たない簡易確認用)。

受入条件

  • Setup 1-1 の Docker Compose が起動した状態で ./gradlew :webapi:bootRun を env vars 付きで実行 → Spring Boot が起動成功
  • 起動ログに Flyway Community Edition X.X.X by Redgate のメッセージが出る
  • 起動ログに Successfully applied 1 migration to schema "tasks", now at version v1.0.0.01 系のメッセージが出る
  • MySQL に接続して SHOW TABLES;flyway_schema_historyuserstasks が存在
  • 2 回目の bootRun では migration が skip(No migration necessary)される
  • application.yml の Flyway 設定が env vars 経由で動作

想定影響範囲

  • Sprint 0 で V1.0.1 / V1.0.2 等の新規 migration を追加する基盤
  • env vars 注入の枠組み(Setup 1-4)と整合

関連

備考

  • task-type: task-type:impl
  • 優先度: priority/p1
  • area: area/db + area/backend

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/backendJava / Spring バックエンド実装変更area/dbFlyway マイグレーション / スキーマ / DDL 変更claude:ready実装着手 OK のサイン。人が付与すると実装 Claude が起動priority/p1High。現スプリント内で完了必須task-type:implコード実装が主体のタスク

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions