デプロイ後の確認
デプロイが完了したら、アプリケーションが正しく動作しているか確認します。このページでは、確認方法とトラブルシューティングの手順を説明します。
デプロイ後の確認フロー
1. GitHub Actions のステータス確認
ワークフロー実行結果の確認
- GitHub リポジトリを開く
- Actions タブを開く
- 最新の実行を確認
ステータス:
- ✅ Success - すべてのステップが成功
- ❌ Failure - いずれかのステップが失敗
- 🟡 In progress - 実行中
各ステップの確認
ワークフロー名をクリックして、各ステップの結果を確認します。
Deploy ワークフローのステップ:
- ✅ plan - デプロイ計画の生成
- ✅ build - Docker イメージのビルドとプッシュ
- ✅ apply-env - 環境変数の適用
- ✅ deploy - Container Apps へのデプロイ
すべてのステップに ✅ がついていれば成功です。
2. Azure Container App のステータス確認
Azure Portal での確認
-
Azure Portalを開く
-
リソースグループを検索
- 検索バーに
rg-と入力 - インフラチームから提供されたリソースグループ名を選択
- 例:
rg-myapp-dev
- 検索バーに
-
Container App を開く
- リソース一覧から Container App を選択
- 例:
ca-myapp-frontend-dev
-
ステータスを確認
Overview タブで確認:
| 項目 | 期待値 | 説明 |
|---|---|---|
| Status | Running | アプリが稼働中 |
| Provisioning State | Succeeded | プロビジョニング成功 |
| Replicas | 1 以上 | 実行中のインスタンス数 |
| Latest Revision | 最新 | 最新のリビジョンがアクティブ |
正常な状態の例:
Status: Running
Provisioning State: Succeeded
Replicas: 1/1
Latest Revision: ca-myapp-frontend-dev--abc123 (100% traffic)
Azure CLI での確認
# Container Appの状態を確認
az containerapp show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--query '{status:properties.runningStatus,replicas:properties.template.scale.minReplicas}' \
--output table
# レプリカの状態を確認
az containerapp replica list \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--output table
3. アプリケーションの動作確認
URL へのアクセス
Container App の URL にアクセスして、アプリケーションが正しく動作しているか確認します。
URL の取得方法:
Azure Portal から取得
- Container App を開く
- OverviewタブのApplication Urlをコピー
- ブラウザでアクセス
URL 形式:
https://<container-app-name>.<region>.azurecontainerapps.io
例:
https://ca-myapp-frontend-dev.japaneast.azurecontainerapps.io
Azure CLI で取得
# URLを取得
az containerapp show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--query properties.configuration.ingress.fqdn \
--output tsv
動作確認のチェックリスト
- ✅ ページが正しく表示される
- ✅ API が正常にレスポンスを返す
- ✅ データベース接続が成功している
- ✅ 環境変数が正しく設定されている
- ✅ ログインなどの主要機能が動作する
4. ログの確認
Azure Portal でログを確認
Log Stream でリアルタイム確認
- Container App を開く
- Log streamタブを開く
- リアルタイムログが表示される
ログの種類:
stdout- 標準出力(アプリケーションログ)stderr- 標準エラー出力(エラーログ)system- システムログ
Log Analytics で過去のログを検索
- Container App を開く
- Logsタブを開く
- KQL クエリを実行
よく使うクエリ:
// 最新のログを表示
ContainerAppConsoleLogs_CL
| where ContainerAppName_s == "ca-myapp-frontend-dev"
| order by TimeGenerated desc
| take 100
// エラーログのみ表示
ContainerAppConsoleLogs_CL
| where ContainerAppName_s == "ca-myapp-frontend-dev"
| where Log_s contains "error" or Log_s contains "Error"
| order by TimeGenerated desc
// 特定の時間範囲のログ
ContainerAppConsoleLogs_CL
| where ContainerAppName_s == "ca-myapp-frontend-dev"
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
Azure CLI でログを確認
# リアルタイムログをストリーミング
az containerapp logs show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--follow
# 最新のログを表示
az containerapp logs show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--tail 100
# 特定のレプリカのログを表示
az containerapp logs show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--replica <replica-name> \
--follow
トラブルシューティング
問題 1: GitHub Actions が失敗する
plan ステップで失敗
エラー例:
❌ Error: 'container_app_name' is required
❌ Error: dotenv_path file not found: .env.dev
原因と解決方法:
| エラー | 原因 | 解決方法 |
|---|---|---|
'container_app_name' is required | infra.config.yml にフィールドがない | container_app_nameを追加 |
dotenv_path file not found | 環境変数ファイルがない | ファイルを作成して暗号化 |
Invalid YAML syntax | YAML の構文エラー | YAML の構文を確認 |
build ステップで失敗
エラー例:
❌ Error: failed to solve: process "/bin/sh -c npm install" did not complete successfully
❌ Error: COPY failed: file not found: package.json
原因と解決方法:
| エラー | 原因 | 解決方法 |
|---|---|---|
npm install failed | 依存関係のエラー | package.jsonを確認、ローカルでビルドテスト |
COPY failed | ファイルパスが間違っている | image.contextとimage.dockerfileを確認 |
Build timeout | ビルドに時間がかかりすぎる | .dockerignoreで不要なファイルを除外 |
デバッグ方法:
# ローカルでDockerビルドをテスト
docker build -f frontend/Dockerfile -t test:latest frontend/
# ビルドログを確認
docker build --progress=plain -f frontend/Dockerfile frontend/
apply-env ステップで失敗
エラー例:
❌ Error: Failed to decrypt .env.dev
❌ Error: GX_SHARED_PRIVATE_KEY is not set
原因と解決方法:
| エラー | 原因 | 解決方法 |
|---|---|---|
Failed to decrypt | GX_SHARED_PRIVATE_KEY が間違っている | GitHub Secrets を確認 |
GX_SHARED_PRIVATE_KEY is not set | Secret が設定されていない | インフラチームに連絡 |
Invalid encrypted format | ファイルが破損している | 再暗号化してコミット |
deploy ステップで失敗
エラー例:
❌ Error: Resource 'ca-myapp-frontend-dev' not found
❌ Error: Insufficient permissions
原因と解決方法:
| エラー | 原因 | 解決方法 |
|---|---|---|
Resource not found | リソース名が間違っている | infra.config.yml を確認 |
Insufficient permissions | Azure 権限がない | インフラチームに連絡 |
Conflict | 別のデプロイが実行中 | 前のデプロイの完了を待つ |
問題 2: Container App が起動しない
症状:
- デプロイは成功したが、アプリが起動しない
- ステータスが
FailedやCrashLoopBackOff
確認手順:
-
ログを確認
az containerapp logs show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--tail 100 -
よくある原因
| エラー | 原因 | 解決方法 |
|---|---|---|
Port 3000 not responding | アプリがポートでリッスンしていない | ポート設定を確認 |
DATABASE_URL undefined | 環境変数が設定されていない | 環境変数を確認 |
Out of memory | メモリ不足 | deploy.memoryを増やす |
Permission denied | ファイル権限エラー | Dockerfile のパーミッション設定を確認 |
- リソース設定を確認
deploy:
min_replicas: 1 # 0の場合、アクセスがないと停止
max_replicas: 3
cpu: "1.0" # CPUが不足していないか
memory: "2.0Gi" # メモリが不足していないか
問題 3: 環境変数が反映されない
症状:
- 環境変数を更新したが、アプリに反映されていない
確認手順:
-
環境変数が暗号化されているか確認
cat .env.dev
# "encrypted:" で始まっているか確認 -
ワークフローが成功しているか確認
- GitHub Actions のログを確認
- apply-env ステップが成功しているか
-
Azure 側の環境変数を確認
# Container Appの環境変数を表示
az containerapp show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--query 'properties.template.containers[0].env' \
--output table
- アプリを再起動
環境変数の変更後、アプリの再起動が必要な場合があります。
# レプリカを再起動(リビジョンを更新)
az containerapp revision restart \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--revision <revision-name>
問題 4: アプリケーションにアクセスできない
症状:
- URL にアクセスしても、
404 Not Foundや502 Bad Gateway
確認手順:
-
Container App が起動しているか確認
az containerapp show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--query 'properties.runningStatus' -
Ingress が有効になっているか確認
Azure Portal で確認:
- Container App を開く
- Ingressタブを開く
- Ingress Enabled: Yes
- HTTP/HTTPS: HTTPS
- Target Port: アプリのポート番号(例: 3000)
- レプリカ数を確認
min_replicas: 0の場合、アクセスがないと停止します。
deploy:
min_replicas: 1 # 0 → 1 に変更
- ファイアウォールや CATO の確認
オフィスネットワークからのみアクセス可能な場合があります。
デプロイのロールバック
問題が解決しない場合、前のバージョンに戻すことができます。
方法 1: 前の Revision をアクティブ化
手順:
- Azure Portal で Container App を開く
- Revisionsタブを開く
- 前の Revision(正常に動作していたバージョン)を選択
- Activateをクリック
- トラフィックを
100%に設定 - Saveをクリック
方法 2: 前のコミットでデプロイ
# 前のコミットをチェックアウト
git log --oneline
git checkout <前のコミットハッシュ>
# Deployワークフローを実行
# GitHub Actions UIから実行
まとめ
デプロイ成功のチェックリスト
- ✅ GitHub Actions がすべて成功している
- ✅ Container App のステータスが
Running - ✅ レプリカが稼働中(1 以上)
- ✅ URL にアクセスできる
- ✅ ログにエラーがない
- ✅ 主要機能が正常に動作する
問題が解決しない場合
-
ログを詳細に確認
- GitHub Actions、Container App、アプリケーションログ
-
設定を再確認
- infra.config.yml
- 環境変数ファイル
- Dockerfile
-
インフラチームに相談
- Azure リソースの設定
- 権限の問題
- ネットワークの問題
関連ドキュメント
- トラブルシューティング - よくある問題と解決方法