network route create
Команда создаёт сетевой маршрут в проекте. Маршрут связывает домен с сервисом (внутренний тип) или внешним URL (внешний тип), позволяя направлять HTTP-запросы по указанному пути.
dockhost network route create --name <name> --domain <domain> --type <type> [options]
Опции
| Опция | Описание | Обязательно | По умолчанию |
|---|---|---|---|
| --name | Имя маршрута | Да | |
| --type | Тип маршрута: internal или external |
Нет | internal |
| --domain | Имя домена. Домен должен существовать в проекте | Да | |
| --service | Имя сервиса (для internal). Сервис должен существовать в проекте | Нет | |
| --port | Порт сервиса в формате <port>/<protocol> (для internal) |
Нет | |
| --upstream | Внешний URL (для external) | Нет | |
| --path | Путь маршрута | Нет | / |
| --rewrite | Rewrite правило в формате path:target:mode (можно указывать несколько раз) |
Нет | |
| -p, --project | Имя проекта | Нет | Текущий проект |
Имя маршрута должно содержать строчные латинские буквы, цифры, дефис или точку и начинаться и заканчиваться буквой или цифрой.
Типы маршрутов
| Тип | Обязательные опции | Поведение |
|---|---|---|
internal |
--service, --port |
Проксирование запросов на сервис проекта |
external |
--upstream |
Проксирование запросов на внешний URL |
Если домен внешний и не прошёл проверку DNS — маршрут создаётся, но активируется после верификации.
Rewrite правила
Rewrite правила позволяют перенаправлять или переписывать URL внутри маршрута. Каждое правило указывается через опцию --rewrite в формате path:target:mode.
Параметры rewrite правила:
| Параметр | Описание |
|---|---|
path |
Regex паттерн для матчинга URI (относительный путь от route.path) |
target |
Целевой путь (поддерживает capture groups: , , и т.д.) |
mode |
Режим: redirect (внешний редирект 302) или rewrite (внутренний) |
Режимы работы:
redirect— внешний редирект (HTTP 302). URL в браузере меняется.rewrite— внутренний rewrite. URL в браузере НЕ меняется, запрос проксируется с измененным URI.
Можно указать несколько rewrite правил, добавив опцию --rewrite несколько раз.
Примеры
Создание внутреннего маршрута:
> dockhost network route create --name web-route --domain example --service web --port 80/TCP
Create network route web-route...
- Created
Создание внешнего маршрута:
dockhost network route create --name ext-route --domain example --type external --upstream https://backend.example.com
Создание маршрута с путём:
dockhost network route create --name api-route --domain example --service api --port 8080/TCP --path /api
Создание маршрута с rewrite правилом:
dockhost network route create --name web-route --domain example --service web --port 80/TCP --rewrite /old:/new:redirect
Создание маршрута с несколькими rewrite правилами:
dockhost network route create --name api-route --domain example --service api --port 8080/TCP --path /api --rewrite /v1(/.*)?:/v2$1:redirect --rewrite /legacy:/new:rewrite