Terraform が提供する環境変数仕様
Terraform がインフラ構築時に自動的に Container Apps に注入する環境変数の技術仕様です。
対象者: インフラチーム、アプリ開発チーム
重要: これらの環境変数は Terraform が自動的に設定するため、アプリケーション側で設定する必要はありません。
環境変数一覧
共通環境変数
すべてのテンプレートで提供される環境変数です。
| 環境変数名 | 説明 | 例 | 対象コンテナ | 注入方法 |
|---|---|---|---|---|
ENVIRONMENT | 環境名 | dev, prd | 全コンテナ | Terraform が自動注入 |
GX_SHARED_PRIVATE_KEY | 環境変数復号化用の共有秘密鍵(必須) | (hex 形式の秘密鍵) | 全コンテナ | CLI が自動注入(必須環境変数) |
重要: GX_SHARED_PRIVATE_KEY は、すべてのテンプレートで必ず自動的に注入されます。この環境変数は、ローカルの環境変数から取得され、Terraform 生成時に frontend と backend の両方のコンテナに自動的に追加されます。.env ファイルに明示的に記載する必要はありません。
テンプレート別環境変数
frontend-backend テンプレート
Frontend Container App
| 環境変数名 | 説明 | 例 | 注入条件 |
|---|---|---|---|
BACKEND_URL | Backend の内部 URL | https://ca-mycompany-backend-dev.internal...io | 必須 |
NEXT_PUBLIC_API_URL | Backend の API エンドポイント | https://ca-mycompany-backend-dev.japaneast...io | 必須 |
AUTH0_BASE_URL | 認証用ベース URL | https://myapp.com | site_url 設定時 |
NEXTAUTH_URL | NextAuth 用 URL | https://myapp.com | site_url 設定時 |
NEXT_PUBLIC_PROXY_URL | プロキシエンドポイント | https://myapp.com/api/proxy | site_url 設定時 |
ENVIRONMENT | 環境名 | dev / prd | 必須 |
Storage 有効時(enable_storage = true):
| 環境変数名 | 説明 | 例 |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME | Storage Account 名 | stmycompanydevfs |
AZURE_STORAGE_ACCOUNT_KEY | Storage Account キー | (自動生成) |
AZURE_STORAGE_CONNECTION_STRING | Storage 接続文字列 | DefaultEndpointsProtocol=https;... |
AZURE_STORAGE_BLOB_ENDPOINT | Blob エンドポイント | https://stmycompanydevfs.blob.core.windows.net/ |
AZURE_STORAGE_CONTAINER_NAME | Blob コンテナ名 | frontend-blob |
Backend Container App
| 環境変数名 | 説明 | 例 |
|---|---|---|
DATABASE_URL | MySQL 接続 URL(DB 名含む、runtime により形式変更) | Node: mysql://admin:pass@host:3306/dbPython: mysql+pymysql://admin:pass@host:3306/db |
DB_URL | SQLAlchemy 用 URL(DB 名なし、pj-shared-fastapi 用) | mysql+pymysql://admin:pass@mysql-mycompany-dev...com:3306 |
MYSQL_HOST | MySQL ホスト名 | mysql-mycompany-dev.mysql.database.azure.com |
MYSQL_PORT | MySQL ポート | 3306 |
MYSQL_USER | MySQL ユーザー名 | admin |
MYSQL_PASSWORD | MySQL パスワード | (設定値) |
MYSQL_DATABASE | MySQL データベース名 | mycompany_dev_db |
ENVIRONMENT | 環境名 | dev / prd |
Storage 有効時(enable_storage = true):
| 環境変数名 | 説明 | 例 |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME | Storage Account 名 | stmycompanydevfs |
AZURE_STORAGE_ACCOUNT_KEY | Storage Account キー | (自動生成) |
AZURE_STORAGE_CONNECTION_STRING | Storage 接続文字列 | DefaultEndpointsProtocol=https;... |
AZURE_STORAGE_BLOB_ENDPOINT | Blob エンドポイント | https://stmycompanydevfs.blob.core.windows.net/ |
AZURE_STORAGE_CONTAINER_NAME | Blob コンテナ名 | backend-blob |
注意:
DATABASE_URLはruntimeの設定により形式が変わります:runtime = "node"(デフォルト):mysql://形式runtime = "python":mysql+pymysql://形式(SQLAlchemy 互換)
DB_URLは SQLAlchemy/PyMySQL 用の接続 URL で、データベース名を含まずホスト:ポートまでです。GenerativeX/pj-shared-fastapi を利用する場合に使用します
monolith テンプレート
Frontend (Monolith) Container App
| 環境変数名 | 説明 | 例 | 注入条件 |
|---|---|---|---|
DATABASE_URL | MySQL 接続 URL(DB 名含む) | mysql://admin:pass@mysql-mycompany-dev.mysql.database.../db | 必須 |
DB_URL | SQLAlchemy 用 URL(DB 名なし、pj-shared-fastapi 用) | mysql+pymysql://admin:pass@mysql-mycompany-dev...com:3306 | 必須 |
MYSQL_HOST | MySQL ホスト名 | mysql-mycompany-dev.mysql.database.azure.com | 必須 |
MYSQL_PORT | MySQL ポート | 3306 | 必須 |
MYSQL_USER | MySQL ユーザー名 | admin | 必須 |
MYSQL_PASSWORD | MySQL パスワード | (設定値) | 必須 |
MYSQL_DATABASE | MySQL データベース名 | mycompany_dev_db | 必須 |
AUTH0_BASE_URL | 認証用ベース URL | https://myapp.com | site_url 設定時 |
NEXTAUTH_URL | NextAuth 用 URL | https://myapp.com | site_url 設定時 |
NEXT_PUBLIC_PROXY_URL | プロキシエンド URL | https://myapp.com/api/proxy | site_url 設定時 |
ENVIRONMENT | 環境名 | dev / prd | 必須 |
Storage 有効時(enable_storage = true):
| 環境変数名 | 説明 | 例 |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME | Storage Account 名 | stmycompanydevfs |
AZURE_STORAGE_ACCOUNT_KEY | Storage Account キー | (自動生成) |
AZURE_STORAGE_CONNECTION_STRING | Storage 接続文字列 | DefaultEndpointsProtocol=https;... |
AZURE_STORAGE_BLOB_ENDPOINT | Blob エンドポイント | https://stmycompanydevfs.blob.core.windows.net/ |
AZURE_STORAGE_CONTAINER_NAME | Blob コンテナ名 | app-blob |
オプションコンポーネント
Redis コンポーネント有効時
config.toml で Redis を有効化した場合、以下の環境変数が自動的に注入されます:
| 環境変数名 | 説明 | 例 | 対象 |
|---|---|---|---|
REDIS_URL | Redis 接続文字列 | rediss://default:password@hostname:6380/0 | Frontend & Backend |
REDIS_HOST | Redis ホスト | redis-mycompany-dev.redis.cache.windows.net | Frontend & Backend |
REDIS_PORT | Redis ポート(非 SSL) | 6380 | Frontend & Backend |
REDIS_SSL_PORT | Redis ポート(SSL) | 6380 | Frontend & Backend |
REDIS_PASSWORD | Redis パスワード | (自動生成) | Frontend & Backend |
注意:
REDIS_URLはrediss://default:password@hostname:6380/0形式の接続文字列で、SSL 接続が有効になっています- 末尾の
/0はデフォルトのデータベース番号を示します - アプリケーションコードでは
REDIS_URLを使用することを推奨します
有効化方法:
["environments.dev.redis"]
enabled = true
sku_name = "Basic"
family = "C"
capacity = 0
重要事項
自動上書き
以下の環境変数は、.env ファイルに記載しても Terraform が自動的に上書きします:
- すべてのデータベース関連環境変数(
DATABASE_URL,MYSQL_*など) BACKEND_URL,NEXT_PUBLIC_API_URL- Storage 関連環境変数(
enable_storage = trueの場合) - Redis 関連環境変数(Redis 有効時)
- Site URL 関連環境変数(
config.tomlでsite_url設定時)
アプリケーション側での扱い
アプリケーション側では、これらの環境変数を以下のように取得できます:
Node.js / Next.js:
const databaseUrl = process.env.DATABASE_URL;
const backendUrl = process.env.BACKEND_URL;
Python / FastAPI:
import os
database_url = os.getenv("DATABASE_URL")
mysql_host = os.getenv("MYSQL_HOST")
関連ドキュメント
インフラチーム向け
アプリ開発チーム向け
- Storage アクセスガイド - Storage 環境変数の使い方
- CI/CD の使い方 - CI/CD の使い方
共通
- 役割分担とワークフロー - 環境変数の管理方針