ARTICLE

閉域ネットワーク環境へのAIアプリデプロイ完全ガイド|Bastion経由VM操作・ACRイメージ管理・3フェーズダウンタイム最小化・5つの落とし穴と対策【2026年版】

2026/4/10

SHARE
閉域

閉域ネットワーク環境へのAIアプリデプロイ完全ガイド|Bastion経由VM操作・ACRイメージ管理・3フェーズダウンタイム最小化・5つの落とし穴と対策【2026年版】

ARTICLE株式会社renue
renue

株式会社renue

2026/4/10 公開

AI導入・DXの悩みをプロに相談してみませんか?

AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。

閉域ネットワーク環境へのAIアプリデプロイは「通常のデプロイとは別物」

金融機関、官公庁、製造業の基幹システム——これらの環境では、インターネットに接続できない閉域ネットワークでのデプロイが求められます。通常のCI/CDパイプラインが使えず、Docker Hubからのイメージpullもできず、外部APIへのアクセスも制限されます。

本記事では、Azure VM+Bastion+ACR構成での閉域環境デプロイを、実際のプロジェクトで運用されている手順に基づいて解説します。

閉域環境デプロイのアーキテクチャ

開発者のローカルPC
  │
  │ docker build → docker push
  ↓
Azure Container Registry(ACR)
  │
  │ docker pull(VM→ACR間はAzureプライベートネットワーク)
  ↓
Azure VM(閉域ネットワーク内)
  ├ app(FE: Next.js, port 3000)
  ├ fastapi(BE: FastAPI, port 8000)
  ├ mysql(port 3307)
  ├ redis(port 6379)
  └ fortran-runner(コンパイル用)
  │
  │ az network bastion tunnel(唯一のアクセス経路)
  ↓
開発者のブラウザ(localhost経由でトンネル接続)

デプロイの3フェーズ設計

フェーズ1:イメージ反映(ダウンタイムなし)

新しいイメージをビルドしてACR経由でVMに届けます。この間、旧コンテナは稼働中のままです。

ステップ実行場所操作
1ローカルイメージビルド(--platform linux/amd64必須)
2ローカルACR認証+push(latest + git SHAタグ)
3VM不要イメージ削除(空き容量10GB以上確保)
4VM新イメージをpull(旧コンテナ稼働中のまま)

フェーズ2:コンテナ切替(ダウンタイム開始→終了)

ステップ操作影響
5前半旧appコンテナを停止・削除FEダウンタイム開始
5後半新コンテナを起動FEダウンタイム終了

事前pullによりダウンタイムは「停止→起動」の数十秒に短縮できます。

フェーズ3:検証(ダウンタイム終了後)

ステップ操作確認事項
6起動確認docker compose psでUp確認、ログにReady in XXXms
7API疎通テストFE(200) / BE(healthy) / FE→BE(200)の3系統
8ブラウザ確認Bastionトンネル経由で画面表示

閉域環境特有の落とし穴と対策

落とし穴1:DNS解決の失敗

VMからAzure OpenAIエンドポイントへのDNS解決が失敗する場合があります。

原因:プライベートリンクが設定されているが、VMのVNetにプライベートDNSゾーンがリンクされていない

暫定対策:VMの/etc/hostsにIPを追記してテスト実施(テスト後に削除)

恒久対策:プライベートDNSゾーンのVNetリンク設定を追加

落とし穴2:ディスク容量不足

旧ACRの不要イメージが蓄積し、新イメージのpullが失敗します。

実例:旧イメージ4つ(約29GB)が残存し、ディスク使用率87%(残り8.5GB)でpull不可

対策:pull前に不要イメージを削除し、空き容量10GB以上を確認してから実行

落とし穴3:Apple Silicon環境のビルド

M1/M2/M3 Macでビルドしたイメージは、--platform linux/amd64を指定しないとLinux VMで動作しません。pullは成功するが起動時にエラーという、発見しにくい障害になります。

落とし穴4:az vm run-commandの同時実行制限

az vm run-command invoke同時に1つしか実行できない。各ステップは前のコマンドの完了を待ってから実行する必要があります。並列実行するとコマンドが失敗またはキューイングされます。

落とし穴5:.env.dockerの管理

VM上の.env.dockerはGit管理外で直接管理されています。イメージの差し替えでは変更されませんが、誤って削除するとFE→BE接続が切れますBACKEND_URL設定が消失)。

Bastionトンネルの運用

基本操作

# FE確認用トンネル
az network bastion tunnel \
  --name bastion-name \
  --resource-group rg-name \
  --target-resource-id /subscriptions/.../vm-name \
  --resource-port 3000 \
  --port 3000

# BE確認用トンネル(別ターミナル)
az network bastion tunnel \
  ... \
  --resource-port 8000 \
  --port 8000

Bastionトンネルの注意事項

  • トンネルを開いたターミナルは閉じないこと。閉じると接続が切れる
  • FE(3000)とBE(8000)を同時に確認する場合は別ターミナルで2本のトンネルを開く
  • Tunnel is ready, connect on port XXXXと表示されたら、http://localhost:XXXXでアクセス可能

コンテナイメージのタグ戦略

閉域環境では「どのコミットが今動いているか」の追跡性が特に重要です。

GIT_SHA=$(git rev-parse --short HEAD)
docker build --platform linux/amd64 \
  -t registry/app:latest \
  -t registry/app:${GIT_SHA} .

latestに加えてgit SHAタグを付与することで、ロールバック時に「どのバージョンに戻すか」を明確に指定できます。

マイグレーション実行のタイミング

閉域環境でのDBマイグレーションは、コンテナ起動とは分離して手動実行が推奨です。

  1. マイグレーション前に必ずDBバックアップを取得(mysqldump
  2. コンテナ起動完了を確認してからマイグレーション実行(起動直後はDB接続初期化中で失敗する場合がある)
  3. マイグレーション結果を確認してからサービス公開

ロールバック手順

問題発生時のロールバック手順を事前に文書化しておきます。

  1. VMでコンテナを停止
  2. DBバックアップから復元(マイグレーション失敗時のみ)
  3. ローカルで前のcommit SHAからイメージを再ビルド
  4. ACRにpush→VMでpull→コンテナ再作成

まとめ:閉域環境デプロイチェックリスト

フェーズチェック項目
ビルド--platform linux/amd64指定済みか
ビルドlatest + git SHAの二重タグを付与したか
pushACR認証が有効か(docker login
VM準備不要イメージ削除→空き容量10GB以上確認
pull旧コンテナ稼働中にpull実行(ダウンタイム最小化)
切替旧コンテナ停止→新コンテナ起動→旧イメージprune
DBバックアップ取得→マイグレーション→結果確認
検証FE/BE/FE→BEの3系統疎通テスト
検証Bastionトンネル経由のブラウザ確認
管理.env.dockerが保全されているか
管理ロールバック手順が文書化されているか

閉域環境デプロイは通常のCI/CDと全く異なるスキルセットが必要です。3フェーズ設計、5つの落とし穴への対策、ロールバック手順の事前準備——この3つを押さえることで、閉域環境でも安全・確実なデプロイが可能になります。

あわせて読みたい

AI活用のご相談はrenueへ

renueは553のAIツールを自社運用する「自社実証型」AIコンサルティングファームです。

→ AIコンサルティングの詳細を見る

関連記事

開発プロセスの改善はrenueにご相談ください

SHARE

AI導入・DXの悩みをプロに相談してみませんか?

AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。

関連記事

AI導入・DXの悩みをプロに相談してみませんか?

AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。

AI・DXの最新情報をお届け

renueの実践ノウハウ・最新記事・イベント情報を週1〜2通配信