Как организовать локальный hosts с портами для разработки сайтов в docker?
Как и чем лучше , настроить у себя окружение для разработки сайтов?
Имеются контейнеры, у всех свои порты для nginx, внутри приложений по умолчанию 80 или 443, они не знают какой наружный порт, и например переадресация в браузерах по умолчанию идет на 80 или javascript отрабатывает только по имени сайта без порта.
какой поставить у себя прокси по имени локально, с 80/443 на любой порт, тоже nginx поднять локально? или есть какие-то другие средства, легкие, без лишних конфигов?
macos/linux
Ты хочешь поднять nginx локально чтобы он играл роль load balancer для nginx изнутри контейнеров? Нужно сделать еще один контейнер тогда и всех остальных в одну сеть спарить. В более простом случае - пиши один докер-композ на проект. Но их может быть и несколько - например для тестов свой, для приложения - свой. Их может быть даже два для приложения - например в одном пишете все что подключается (субд, очереди и тд), а во втором - все что из приложения - воркеры, консольки, хттп-серверы. Потом их нужно соединять через точку с запятой (для винды) или через двоеточие (для линукса и мака) в командой строке, для этого удобно использовать Makefile, чтоб каждый раз не печатать путь до конфига, а просто вызывать "make up/down".
А если вопрос просто переключения - то docker-compose.yml пиши под каждый проект и везде свои порты. Решил поработать над проектом - поднял этот композ, решил на другим - этот погасил, поднял другой. В этом и идея была. Соответственно порт пишешь внешний какой прямо сейчас хочется, с ним и работаешь.
Сергей Горностаев, разные версии пакетов, причем тут это? мне нужно разруливать порты, как вариант все на 80, но если 2 проекта одновременно то , проксировать нужно
AgentSmith72, "Все проекты стягивайте в директорию с папкой docker." что это означает.
на каждый проекта свой docker-compose, у каждого своя сеть, у каждого свой веб-сервер отдает порт http - любой либо 2-3 порта(ssl, ws).
я понимаю так, что нужно локально теперь разруливать(проксировать) any_host:80 на any_host:XXX1, any_host:XXX2 и д
dzhunior, очевидно, раз вы не владеете тонкостями docker, то и нет смысла делать разные сборки docker, под разные проекты в локальной среде.
"Все проекты стягивайте в директорию с папкой docker." что это означает.
Сделайте одну сборку docker. И в ней конфиги nginx для каждого конкретного проекта. Сайты будут доступны не по номеру порта, а по имени, указанном в etc\hosts.
AgentSmith72, Зачем и для чего? если у каждого проекта свой докер, там проекты все разные и пакеты разные, и фронт, и бэк разные и куча всего?
какие тут тонкости нужно еще знать, я просто спросил про порт, какие есть варианты проксирования, какие-то тонкости указываете. я же говорю 10-ки проектов с различными node, php и прочий зоопарк.
я могу остановить один докер-композ и запустить другой, но нужно и два проекта одновременно запустить.
я могу через локальный NGINX проксировать, но подумал может есть что-то проще, вот и весь вопрос.
dzhunior, если на локалке, то можете хоть все сразу запустить. Одного контейнера достаточно.
В докере у вас должно быть все что нужно этим проектам. Вы когда работаете с одним проектом из всех открытых, этот процесс и работает в контейнере. Переключитесь на другой проект, это уже новый процесс на сервере и т.д. Количество одновременных процессов зависит от характеристик железа.
То что версии пакетов разные это уже другой вопрос. Обычно на локалке все проекты одной сборки и связываются с одним конфигом докере.