カテゴリ: Play Framework 更新日: 2025/11/14

Play Frameworkでの設定ファイルの外部化!環境変数・Docker・Kubernetes対応

configの外部化(環境変数・Docker・K8s対応)
configの外部化(環境変数・Docker・K8s対応)

先生と生徒の会話形式で理解しよう

生徒

「Play Frameworkでアプリを作ったんですけど、開発環境と本番環境で設定を変えたいです。」

先生

「それなら、configの外部化を使うと便利です。環境変数やDocker、Kubernetesでも同じ設定を使えます。」

生徒

「configの外部化ってどうやってやるんですか?」

先生

「順を追って説明しますね。Play FrameworkはHOCON形式のapplication.confを使いますが、外部化することで環境ごとに設定を切り替えられます。」

1. configの外部化とは?

1. configの外部化とは?
1. configの外部化とは?

Play Frameworkのconf/application.confにはデータベース接続やポート番号、APIキーなどを設定します。しかし、開発環境や本番環境で同じファイルを使うと設定が混ざってしまいます。そこで、外部化を行うことで、環境ごとに設定を変更できるようにします。

外部化には主に以下の方法があります。

  • 環境変数を利用する
  • Dockerコンテナに設定を渡す
  • Kubernetes ConfigMapやSecretを利用する

2. 環境変数を使った設定外部化

2. 環境変数を使った設定外部化
2. 環境変数を使った設定外部化

Play Frameworkでは${VAR_NAME}形式で環境変数を参照できます。例えば、データベースのURLを環境変数にすると、ローカル開発と本番環境で異なる値を簡単に切り替えられます。


# conf/application.conf
db.default.url = ${DB_URL}
db.default.username = ${DB_USER}
db.default.password = ${DB_PASSWORD}

この場合、実行前に環境変数を設定しておきます。


export DB_URL="jdbc:postgresql://localhost:5432/mydb"
export DB_USER="user"
export DB_PASSWORD="pass"
sbt run

これで開発環境ごとに設定を変更できます。

3. Docker環境での設定外部化

3. Docker環境での設定外部化
3. Docker環境での設定外部化

DockerでPlay Frameworkを実行する場合、環境変数や.confファイルをコンテナに渡すことで設定を外部化できます。


docker run -e DB_URL="jdbc:postgresql://db:5432/prod" \
           -e DB_USER="produser" \
           -e DB_PASSWORD="prodpass" \
           my-play-app

また、Docker Composeを使うと複数サービスの設定を一元管理できます。

4. Kubernetes(K8s)対応

4. Kubernetes(K8s)対応
4. Kubernetes(K8s)対応

KubernetesではConfigMapやSecretを使って設定を外部化します。ConfigMapは一般的な設定用、SecretはパスワードやAPIキーのような機密情報用です。


apiVersion: v1
kind: ConfigMap
metadata:
  name: play-config
data:
  DB_URL: "jdbc:postgresql://db:5432/prod"
  DB_USER: "produser"
---
apiVersion: v1
kind: Secret
metadata:
  name: play-secret
type: Opaque
data:
  DB_PASSWORD: cHJvZHBhc3M=  # base64でエンコード

Pod定義で環境変数として注入すれば、Play Frameworkは同じapplication.confを使いながら環境ごとに設定を切り替えられます。

5. 外部化のメリット

5. 外部化のメリット
5. 外部化のメリット
  • 開発環境・本番環境で設定を簡単に切り替えられる
  • DockerやKubernetesでも同じ設定ファイルで動作する
  • セキュリティ上、パスワードやAPIキーをコードに書かずに管理できる
  • CI/CD環境でも柔軟に設定を切り替え可能

Play Frameworkでのconfig外部化は、現代のクラウドネイティブ開発において非常に重要な技術です。初めは少し難しく感じますが、環境変数、Docker、Kubernetesを順に学ぶことでスムーズに運用できます。

カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkでフォームデータをコントローラで扱う方法を完全解説|Java初心者向けコントローラ入門
New2
Jakarta EE
Jakarta EE JSPにおけるJSTLとスクリプトレットの違いと使い分けを初心者向けに徹底解説
New3
Play Framework
Play Frameworkでクエリパラメータをコントローラで処理する方法を完全解説|Java初心者向け入門
New4
Play Framework
Play FrameworkとSpring Bootの違いを徹底比較!初心者でもわかるJavaフレームワーク入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EE JSPにおけるJSTL国際化タグ(fmt:message)の使い方を初心者向けに完全解説
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EE JSPでJSTLを使ったJSONやREST APIレスポンス処理を初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Play Framework
Play Frameworkでリクエストデータの受け取り方を完全解説|Java初心者向けコントローラ入門