7.4. Flyway設定
7.4.1. application.yml
yaml
spring:
flyway:
enabled: true
locations: classpath:db/migration
baseline-on-migrate: false
validate-on-migrate: true
out-of-order: false| 設定 | 値 | 説明 |
|---|---|---|
enabled | true | Flyway自動実行を有効化 |
locations | classpath:db/migration | マイグレーションファイルの配置場所 |
baseline-on-migrate | false | 既存DBへのbaseline自動適用を無効化 |
validate-on-migrate | true | マイグレーションファイルの整合性検証 |
out-of-order | false | 順序を逸脱したマイグレーションを禁止 |
7.4.2. プロファイル別設定
yaml
# application-local.yml
spring:
flyway:
clean-disabled: false # ローカルでのみcleanを許可yaml
# application-prod.yml
spring:
flyway:
clean-disabled: true # プロダクションでのcleanは絶対禁止
baseline-on-migrate: false必須
プロダクション環境でflyway:cleanは絶対に実行してはなりません。 clean-disabled: trueを必ず設定します。
7.4.3. Mavenプラグイン
CI/CDでマイグレーションを独立的に実行する場合や、jOOQ codegenの前にスキーマを適用する際に使用します。
xml
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<configuration>
<url>jdbc:postgresql://localhost:5432/flowin</url>
<user>flowin</user>
<password>flowin1234</password>
<locations>
<location>filesystem:src/main/resources/db/migration</location>
</locations>
</configuration>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
<version>${flyway.version}</version>
</dependency>
</dependencies>
</plugin>bash
# マイグレーション実行
mvn flyway:migrate
# マイグレーション状態確認
mvn flyway:info
# マイグレーション検証
mvn flyway:validate