Как лучше организовать контейнеры... на внешних портах 8080 и 8090 слушают app-frontend-main app-frontend-login. Нужно чтобы при локально запуске на localhost открывался app-frontend-login и только после успешного логина трафик направлялся на второй контейнер и уже с ним происходила последующая работа.
И второе, как это сделать на удаленном сервере, чтобы сначала всегда открывалась страница login из контейнера app-frontend-login на том же самом dns - желательно, например company.ru и только после успешного логина происходил перевод на страницу из контейнера app-frontend-main? На крайняк можно, чтобы при первом заходе на страницу приложения происходил переход из company.ru на company.ru/login.htm, а потом обратно на company.ru. Какие практики существуют по этому поводу?
Контейнеры же приложение) обслуживают не одного пользователя, а кучу. То-есть кто-то прошёл авторизацию, а кто-то ещё нет.. Поэтому на уровне контейнеров эту проблему не решить. Это уровень приложения.
Вы давайте пользователю токен авторизации (cookie). И бэкеннд будет знать: есть авторизация - работаем. Нет - редиректим на страницу авторизации.
Если разные сайты (докеры) отвечают за разные части по URL запроса, то перед ними ставят балансровщик (reverse-proxy). Тот же nginx, который исходя из URL запроса сам дальше переводит на один сайтов (хоть по портам могут отличаться, хоть по адресам).
хорошо, но балансировщик отдает index.html страницы из разных контейнеров, откуда он знает, если какой-то токен в переданном запросе? И как избежать редиректа обратно в форму аутентификации/авторизации то бишь в первый контейнер?
Вадим, ну так сделайте, что бы имя хоста отличались или путь (prefix) в URL.
Грубо:
company.ru проверяет, есть ли авторизация и если нет, то отправляет на
company.ru/login
Балансировщик знает, что если впереди есть /login, то ножа отправлять на контейнер авторизации.