AITM резервирует один непрерывный диапазон портов Docker для контейнеров всех управляемых проектов. На этой странице объясняется, как работает этот пул портов и почему проверка CORS — отдельный вопрос.
Порты Docker и доступ CORS
1. Один общий пул портов
AITM резервирует один непрерывный диапазон портов Docker (по умолчанию 20000–20050, 50 портов) для контейнеров всех управляемых проектов. Диапазон задан в src/constants.ts AITM и может быть переопределён через 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 | какие источники (origin) браузера AITM пропускает через свой OriginPolicy | конфигурация сервера AITM, независимо от диапазона портов |
Это общий пул, а не отдельный порт или IP-адрес на каждый проект. Чтобы проект был доступен из браузера на хосте, его Web Port должен просто попадать в опубликованный диапазон — AITM не выдаёт отдельные IP-адреса для каждого проекта.
2. CORS — вторая, независимая проверка
Публикация порта в Docker и разрешение источника CORS в AITM — два отдельных условия. Чтобы контейнер проекта был доступен из браузера, должны выполняться оба: порт должен быть опубликован Docker И источник браузера должен быть разрешён OriginPolicy AITM. Выполнения только одного из двух недостаточно.
Практические рекомендации
- Если порт dev/test-сервера нового проекта оказывается вне опубликованного диапазона, внутри контейнера всё будет выглядеть исправным, но проект окажется недоступным из браузера на хосте.
- Решение — перенести порт проекта в опубликованный диапазон (или расширить
projectPortRangeв Settings), а не запрашивать новый IP-адрес. - Если с портом всё в порядке, а браузер всё равно сообщает об ошибке CORS, проблема в
OriginPolicy, а не в диапазоне портов — это отдельная проверка.