AITMは、管理対象のすべてのプロジェクトのコンテナ用に、連続した1つのDockerポート範囲を予約します。このページでは、そのポートプールの仕組みと、CORSチェックが別の問題である理由を説明します。
Docker Ports & CORS Access
1. 共有される1つのポートプール
AITMは、管理対象のすべてのプロジェクトのコンテナ用に、連続した1つのDockerポート範囲(デフォルトは20000–20050、50ポート)を予約します。この範囲はAITMのsrc/constants.tsで定義されており、release/docker/.env(AITM_PROJECT_PORTS_START / AITM_PROJECT_PORTS_END)またはSettings → Projects & Memory(projectPortRange)で上書きできます。
| 概念 | 制御する内容 | 設定場所 |
|---|---|---|
| Dockerのポート公開範囲 | ブラウザから到達できるよう、Dockerがホストに公開するコンテナのポート | release/docker/.env(AITM_PROJECT_PORTS_START/_END)またはSettings → Projects & Memory → projectPortRange |
| CORS許可オリジン | OriginPolicyを通じてAITMが許可するブラウザのオリジン | AITMサーバーの設定。ポート範囲とは独立しています |
これは共有プールであり、プロジェクトごとに専用のポートやIPアドレスがあるわけではありません。プロジェクトのWeb Portが公開範囲内に収まっていれば、ホストのブラウザから到達できます — AITMがプロジェクトごとに個別のIPアドレスを割り当てることはありません。
2. CORSは独立した2つ目のチェック
Dockerがポートを公開することと、AITMがCORSオリジンを許可することは、2つの別個の条件です。プロジェクトのコンテナにブラウザから到達できるためには、両方が満たされる必要があります。つまり、ポートがDockerによって公開されていることかつ、ブラウザのオリジンがAITMのOriginPolicyによって許可されていることです。どちらか一方だけでは不十分です。
実践的なガイダンス
- 新しいプロジェクトの開発/テストサーバーのポートが公開範囲の外にある場合、コンテナ内ではすべて正常に動作しているように見えても、ホストのブラウザからは到達できません。
- 解決方法は、プロジェクトのポートを公開範囲内に移すこと(またはSettingsで
projectPortRangeを広げること)です — 新しいIPアドレスを要求することではありません。 - ポートに問題がないのにブラウザがCORSエラーを報告する場合、原因はポート範囲ではなく
OriginPolicyです — これは別のチェックです。