Phase 1 Setup 1-4: application.yml 単一化 + env vars 注入の枠組み
概要
webapi/src/main/resources/application.yml を単一ファイル化(Spring プロファイル不使用、Native Image 対応の伏線)し、環境差は env vars で吸収する枠組みを整備する。
詳細仕様: docs/architecture/infrastructure-plan.md v5 §2 #5(Spring プロファイル不使用)、§3.4(env vars 注入)。
背景
infrastructure-plan v5 の確定前提(#5):
- Spring プロファイル不使用:
application-local.yml / application-prod.yml 等のプロファイル分割をしない
- 環境差は ECS Task Definition / Docker Compose の
environment / secrets で env vars 注入
現状の webapi/src/main/resources/application.yml は scaffold 段階の最小構成。Sprint 0 で DataSource / Flyway / OAuth2 を実装するため、env vars 経由の枠組みを準備する。
実装内容
A. application.yml 単一化
spring:
application:
name: tasks-webapi
datasource:
url: ${DATASOURCE_URL}
username: ${DATASOURCE_USERNAME}
password: ${DATASOURCE_PASSWORD:} # IAM 認証の場合は空可
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: validate
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
flyway:
enabled: true
url: ${DATASOURCE_URL}
user: ${DATASOURCE_USERNAME}
password: ${DATASOURCE_PASSWORD:}
locations: classpath:db/migration
security:
oauth2:
resourceserver:
jwt:
issuer-uri: ${OIDC_ISSUER_URI}
server:
port: 8080
management:
endpoints:
web:
exposure:
include: health,info
logging:
level:
root: INFO
xyz.dgz48: DEBUG
(項目は scaffold 段階の最小から拡張。詳細は基本設計書 §3 と整合)
B. env vars 一覧をドキュメント化
webapi/src/main/resources/application.yml のコメントまたは docs/dev/local-setup.md(Setup 1-6 で作成)に env vars 一覧を記載:
| env var |
用途 |
local 例 |
dev 例 |
DATASOURCE_URL |
JDBC URL |
jdbc:mysql://localhost:3306/tasks?useSSL=false&allowPublicKeyRetrieval=true |
jdbc:mysql://db.tasks.internal:3306/tasks?useSSL=true |
DATASOURCE_USERNAME |
DB user |
tasks_webapi |
tasks_webapi |
DATASOURCE_PASSWORD |
DB password |
tasks_webapi_pw |
(IAM 認証で空) |
OIDC_ISSUER_URI |
Keycloak Realm issuer |
http://localhost:8080/realms/tasks |
https://auth-dev.tasks.dgz48.xyz/realms/tasks |
C. ローカル起動スクリプト(任意)
.env.local(.gitignore 入り)を repo root に作成:
# .env.local(commit しない)
export DATASOURCE_URL=jdbc:mysql://localhost:3306/tasks?useSSL=false&allowPublicKeyRetrieval=true
export DATASOURCE_USERNAME=tasks_webapi
export DATASOURCE_PASSWORD=tasks_webapi_pw
export OIDC_ISSUER_URI=http://localhost:8080/realms/tasks
.gitignore に .env.local を追加。
開発者: source .env.local && ./gradlew :webapi:bootRun。
受入条件
想定影響範囲
- Sprint 0 / 1 / 2 の全 アプリ実装で利用される基盤
- Native Image 化(ADR-0008 by Setup 2-4)時も同枠組みを維持
- ECS Task Definition は同じ env vars を注入する(infrastructure-plan v5 §3.4)
関連
備考
- task-type:
task-type:impl
- 優先度:
priority/p0(Sprint 0 アプリ実装のクリティカルパス)
- area:
area/backend + area/infra
Phase 1 Setup 1-4: application.yml 単一化 + env vars 注入の枠組み
概要
webapi/src/main/resources/application.ymlを単一ファイル化(Spring プロファイル不使用、Native Image 対応の伏線)し、環境差は env vars で吸収する枠組みを整備する。詳細仕様:
docs/architecture/infrastructure-plan.mdv5 §2 #5(Spring プロファイル不使用)、§3.4(env vars 注入)。背景
infrastructure-plan v5 の確定前提(#5):
application-local.yml/application-prod.yml等のプロファイル分割をしないenvironment/secretsで env vars 注入現状の
webapi/src/main/resources/application.ymlは scaffold 段階の最小構成。Sprint 0 で DataSource / Flyway / OAuth2 を実装するため、env vars 経由の枠組みを準備する。実装内容
A.
application.yml単一化(項目は scaffold 段階の最小から拡張。詳細は基本設計書 §3 と整合)
B. env vars 一覧をドキュメント化
webapi/src/main/resources/application.ymlのコメントまたはdocs/dev/local-setup.md(Setup 1-6 で作成)に env vars 一覧を記載:DATASOURCE_URLjdbc:mysql://localhost:3306/tasks?useSSL=false&allowPublicKeyRetrieval=truejdbc:mysql://db.tasks.internal:3306/tasks?useSSL=trueDATASOURCE_USERNAMEtasks_webapitasks_webapiDATASOURCE_PASSWORDtasks_webapi_pwOIDC_ISSUER_URIhttp://localhost:8080/realms/taskshttps://auth-dev.tasks.dgz48.xyz/realms/tasksC. ローカル起動スクリプト(任意)
.env.local(.gitignore入り)を repo root に作成:.gitignoreに.env.localを追加。開発者:
source .env.local && ./gradlew :webapi:bootRun。受入条件
webapi/src/main/resources/application.ymlが単一ファイル(application-*.ymlのプロファイル分割なし)application.ymlに DataSource / Flyway / OAuth2 issuer / server.port / management endpoints / logging の設定が記載済${ENV_VAR}形式で参照されているdocs/dev/local-setup.mdに記載.env.localテンプレートまたは類似の方式が用意され、.gitignoreに追加されている./gradlew :webapi:bootRun起動成功(Setup 1-3 で MySQL / Flyway、Setup 1-2 で Keycloak が動いている前提)想定影響範囲
関連
Phase 1 Setup 1(due 2026-06-13)docs/architecture/infrastructure-plan.mdv5 §3.4備考
task-type:implpriority/p0(Sprint 0 アプリ実装のクリティカルパス)area/backend+area/infra