メインコンテンツまでスキップ

デプロイ後の確認

デプロイが完了したら、アプリケーションが正しく動作しているか確認します。このページでは、確認方法とトラブルシューティングの手順を説明します。

デプロイ後の確認フロー

1. GitHub Actions のステータス確認

ワークフロー実行結果の確認

  1. GitHub リポジトリを開く
  2. Actions タブを開く
  3. 最新の実行を確認

ステータス:

  • Success - すべてのステップが成功
  • Failure - いずれかのステップが失敗
  • 🟡 In progress - 実行中

各ステップの確認

ワークフロー名をクリックして、各ステップの結果を確認します。

Deploy ワークフローのステップ:

  1. plan - デプロイ計画の生成
  2. build - Docker イメージのビルドとプッシュ
  3. apply-env - 環境変数の適用
  4. deploy - Container Apps へのデプロイ

すべてのステップに ✅ がついていれば成功です。

2. Azure Container App のステータス確認

Azure Portal での確認

  1. Azure Portalを開く

  2. リソースグループを検索

    • 検索バーにrg-と入力
    • インフラチームから提供されたリソースグループ名を選択
    • 例: rg-myapp-dev
  3. Container App を開く

    • リソース一覧から Container App を選択
    • 例: ca-myapp-frontend-dev
  4. ステータスを確認

Overview タブで確認:

項目期待値説明
StatusRunningアプリが稼働中
Provisioning StateSucceededプロビジョニング成功
Replicas1 以上実行中のインスタンス数
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 から取得

  1. Container App を開く
  2. OverviewタブのApplication Urlをコピー
  3. ブラウザでアクセス

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 でリアルタイム確認

  1. Container App を開く
  2. Log streamタブを開く
  3. リアルタイムログが表示される

ログの種類:

  • stdout - 標準出力(アプリケーションログ)
  • stderr - 標準エラー出力(エラーログ)
  • system - システムログ

Log Analytics で過去のログを検索

  1. Container App を開く
  2. Logsタブを開く
  3. 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 requiredinfra.config.yml にフィールドがないcontainer_app_nameを追加
dotenv_path file not found環境変数ファイルがないファイルを作成して暗号化
Invalid YAML syntaxYAML の構文エラー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.contextimage.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 decryptGX_SHARED_PRIVATE_KEY が間違っているGitHub Secrets を確認
GX_SHARED_PRIVATE_KEY is not setSecret が設定されていないインフラチームに連絡
Invalid encrypted formatファイルが破損している再暗号化してコミット

deploy ステップで失敗

エラー例:

❌ Error: Resource 'ca-myapp-frontend-dev' not found
❌ Error: Insufficient permissions

原因と解決方法:

エラー原因解決方法
Resource not foundリソース名が間違っているinfra.config.yml を確認
Insufficient permissionsAzure 権限がないインフラチームに連絡
Conflict別のデプロイが実行中前のデプロイの完了を待つ

問題 2: Container App が起動しない

症状:

  • デプロイは成功したが、アプリが起動しない
  • ステータスがFailedCrashLoopBackOff

確認手順:

  1. ログを確認

    az containerapp logs show \
    --name ca-myapp-frontend-dev \
    --resource-group rg-myapp-dev \
    --tail 100
  2. よくある原因

エラー原因解決方法
Port 3000 not respondingアプリがポートでリッスンしていないポート設定を確認
DATABASE_URL undefined環境変数が設定されていない環境変数を確認
Out of memoryメモリ不足deploy.memoryを増やす
Permission deniedファイル権限エラーDockerfile のパーミッション設定を確認
  1. リソース設定を確認
deploy:
min_replicas: 1 # 0の場合、アクセスがないと停止
max_replicas: 3
cpu: "1.0" # CPUが不足していないか
memory: "2.0Gi" # メモリが不足していないか

問題 3: 環境変数が反映されない

症状:

  • 環境変数を更新したが、アプリに反映されていない

確認手順:

  1. 環境変数が暗号化されているか確認

    cat .env.dev
    # "encrypted:" で始まっているか確認
  2. ワークフローが成功しているか確認

    • GitHub Actions のログを確認
    • apply-env ステップが成功しているか
  3. Azure 側の環境変数を確認

# Container Appの環境変数を表示
az containerapp show \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--query 'properties.template.containers[0].env' \
--output table
  1. アプリを再起動

環境変数の変更後、アプリの再起動が必要な場合があります。

# レプリカを再起動(リビジョンを更新)
az containerapp revision restart \
--name ca-myapp-frontend-dev \
--resource-group rg-myapp-dev \
--revision <revision-name>

問題 4: アプリケーションにアクセスできない

症状:

  • URL にアクセスしても、404 Not Found502 Bad Gateway

確認手順:

  1. Container App が起動しているか確認

    az containerapp show \
    --name ca-myapp-frontend-dev \
    --resource-group rg-myapp-dev \
    --query 'properties.runningStatus'
  2. Ingress が有効になっているか確認

Azure Portal で確認:

  • Container App を開く
  • Ingressタブを開く
  • Ingress Enabled: Yes
  • HTTP/HTTPS: HTTPS
  • Target Port: アプリのポート番号(例: 3000)
  1. レプリカ数を確認

min_replicas: 0の場合、アクセスがないと停止します。

deploy:
min_replicas: 1 # 0 → 1 に変更
  1. ファイアウォールや CATO の確認

オフィスネットワークからのみアクセス可能な場合があります。

デプロイのロールバック

問題が解決しない場合、前のバージョンに戻すことができます。

方法 1: 前の Revision をアクティブ化

手順:

  1. Azure Portal で Container App を開く
  2. Revisionsタブを開く
  3. 前の Revision(正常に動作していたバージョン)を選択
  4. Activateをクリック
  5. トラフィックを100%に設定
  6. Saveをクリック

方法 2: 前のコミットでデプロイ

# 前のコミットをチェックアウト
git log --oneline
git checkout <前のコミットハッシュ>

# Deployワークフローを実行
# GitHub Actions UIから実行

まとめ

デプロイ成功のチェックリスト

  • ✅ GitHub Actions がすべて成功している
  • ✅ Container App のステータスがRunning
  • ✅ レプリカが稼働中(1 以上)
  • ✅ URL にアクセスできる
  • ✅ ログにエラーがない
  • ✅ 主要機能が正常に動作する

問題が解決しない場合

  1. ログを詳細に確認

    • GitHub Actions、Container App、アプリケーションログ
  2. 設定を再確認

    • infra.config.yml
    • 環境変数ファイル
    • Dockerfile
  3. インフラチームに相談

    • Azure リソースの設定
    • 権限の問題
    • ネットワークの問題

関連ドキュメント