Комментарии 14
как понимаю это нафик не нужно исли используешь докер сварм, там автоматическая балансировка идет сервисов
Мне кажется, что swarm это не то. Была нужна не кластеризация с балансировкой трафика, а доступ к нескольким сервисам по одному
внешнему интерфейсу и порту. Для каждого сервиса используется свой docker образ (где на базе php 5.6, где на 7.4) и свои тома,
проброшенные на локальные папки хост машины, но хост машина одна. Как переправить трафик с 80 порта хост системы в один из
работающих контейнеров с рамках swarm? Я пока не понимаю.
внешнему интерфейсу и порту. Для каждого сервиса используется свой docker образ (где на базе php 5.6, где на 7.4) и свои тома,
проброшенные на локальные папки хост машины, но хост машина одна. Как переправить трафик с 80 порта хост системы в один из
работающих контейнеров с рамках swarm? Я пока не понимаю.
Для решения моих проблем подошел бы и nginx. Но не уверен, что nginx лучше. На мой взгляд haproxy более заточен под задачи проксирования и более гибок в настройках. nginx довольно универсален и есть соблазн использовать его везде, но универсальные решения всегда уступают специализированным.
Почему оверкилл по сети? Это же внутренняя сеть docker. При запуске docker-compose, если не указано другое, автоматически создается сеть в которой регистрируются запускаемые контейнеры. Просто мы берем ее параметры под контроль чтобы жестко задать ip адреса в конфигурации haproxy. При работе nginх тоже пришлось бы указывать адреса куда направлять запросы.
Почему оверкилл по сети? Это же внутренняя сеть docker. При запуске docker-compose, если не указано другое, автоматически создается сеть в которой регистрируются запускаемые контейнеры. Просто мы берем ее параметры под контроль чтобы жестко задать ip адреса в конфигурации haproxy. При работе nginх тоже пришлось бы указывать адреса куда направлять запросы.
Ещё есть же traefik. С ним имхо в докер намного удобнее. Настройка вся в одном docker-compose
backend:
image: go-backend
restart: always
labels:
- "traefik.backend=backend"
- "traefik.http.routers.backend.rule=Host(`${HOST}`)"
А почему не использовать готовое решение аля traefik или https://hub.docker.com/r/jwilder/nginx-proxy? И то и другое требует минимальных изменений для работы (или лейблы или переменные в контейнере) и умеет все что нужно...
Ребята, никто не сталкивался с тем, что бд медленнее, когда или приложение в докере или бд или оба сразу? Третий день эксперименирую, больше для себя, но просадка приложения при активной работе с бд около 20%, если на чистом сетевом взаимодействии, типа дамп грузить выгрузить, то может и до 50% замедление быть...
А контейер с базой ничего не прокидывает на ружу? И какая система? Случаем не windows?
Пробовал и с монтированием -v и без, я вчера даже рядом с php поставил MariaDB, понял что чет не то или с настройками или с опциями запуска, пиковые скорости чтения проседают из БД. Погуглил, кто-то пишет что на контейнере centos ситуация лучше, чем на официальных убунту или alpine, тут какая-то магия, никогда особо не запаковывал основные проекты в докер, только устаревшие всякие в докер закинул и забыл, но тут решил закрыть вопрос когда разрабатываю на новой версии PHP, на продакте чуть старее, каких-то модулей нет или локаль не та, в общем полную переносимость реализовать захотел и с базой тоже захотел зафиксировать одну версию с одними настройками, но тут надо колдовать с опциями, ну или забить, так и оставить, в базе обычно меньше изменений критичных, чем например между php 7.1 и 7.4…
Система хоста Debian 10.
Система хоста Debian 10.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Использование HAProxy и Docker на машине разработчика при разработке сайтов