Что лучше использовать в локальной разработке веб-проектов на Mac OS? MAMP Pro или Docker?
Всем привет.
Не так давно переехал с Windows на Mac OS. На Windows использовал Open Server Panel для поднятия окружения сайта. Сайты от лендингов до крупных сервисов. Сейчас решил найти что-то такое же только для Mac OS. Наткнулся на MAMP Pro. По скринам, на первый взгляд это что-то похожее на. OSPanel только для Mac OS. Во время изучения вопроса, также натыкался на тех, кто рекомендовал использовать Docker. Тогда решил изучить разные статьи по Docker и в свежих статьях пишут, что он умирает и компании избавляются от него. Просто цитирую, это не мое мнение. Так вот. Что порекомендуете? Поставить MAMP Pro, настраивать под каждый сайт и не париться? Или лучше сделать Docker под каждый проект включая лендинг с пару php скриптами? И можно ли, например, в MAMP Pro поставить бд Clickhouse, RabbitMQ и т.д. Redis я точно там видел. В общем, сейчас я в замешательстве, что мне делать.. Помогите найти правильный путь. Который сэкономит время и не будет меня ограничивать и создавать проблемы.
Docker очень удобен и прост для поднятия каких угодно сервисов для нужд проекта...
RabbitMQ, базы для дева/теста, какие угодно демоны и прочее... супер-просто и супер-надежно
Статьи про ненужность Докера идут только в контексте контейнеров на проде в кубере и прочее
если, например мне нужно запустить 3 сайта. api.domain.loc, lk.domain.loc, domain.loc. Как сделать, чтобы в адресной строке браузера указывать эти домены и попадать на каждый проект?
для данного решения вы можете поставить еще один контейнер с nginx как реврес-прокси или traefik как тот же реверс-прокси, который будет ваши урлы роутить внутри приватной network внутри докер-сервисов и отправлять туда запросы...
Итого:
Создаете в docker-compose некоторую сеть (секция network в docker-compose.yml, у каждого из сервиса делаете expose 80 порта (не биндинг портов, чтобы конфликта в localhost не было)
Ставите реверс-прокси с nginx, чтобы он тоже мог с этой сетью работать
Настраиваете его так, чтобы роуты он направлял в нужные сети нужным серисам
Максим Федоров, для меня это пока в новинку. Например, чтобы не редачить хост вручную, можно юзать прогу NAMO (от MAMP Pro) или, открыл сегодня для себя вот этот сервис nip.io. Хочу вам попросить, сделать пример проекта, и залить на гит или куда ниб еще. Вот допустим чтобы было 3 папки. api.domain.loc, lk.domain.loc, domain.loc. В каждой папки index.html файл. И конфиги с docker compose. Как это правильно. И чтобы я выполнил команду запуска, и в браузере смог попасть именно по вот этим адресам api.domain.loc, lk.domain.loc, domain.loc на каждый хост. Был оооооочень благодарен. Мне бы это дало очень большой буст в освоении. Спасибо.
Максим Федоров, отлично! Спасибо! Когда примерно ожидать? И еще вопрос, можно ли Docker связать с разработкой React Native мобильных приложений? Объясняю зачем: в папке с проектом есть гигантская папка node_mudules. Было бы хорошо если бы эта папка была где-то в контейнере и не мешалась. И плюс если разные версии node и npm используются. Но скорее всего, докер для этого не то решение. для разных версий node я использую алиасы, через них переключаю версии.
CaptainJustness,
папку node_modules лучше хранить в проекте, тк при пересоздании контейнера потеряются данные, которые только в контейнере... лучше примаунтить состояние через volume в docker-compose
можно ли Docker связать с разработкой React Native мобильных приложений?
Конечно можно, я через докер-сервис делаю билды и запускаю сервер (в вашем случае клиент будет), надо поискать готовые сборки и на их основе свое сделать
Максим Федоров, Спасибо. Уточните, пожалуйста, как скоро ожидать статью?) И если бы еще в той же статье было написано как сделать чтобы изменения в файлах проекта сразу же улетали в запущенный контейнер. И если допустим скрипты создавали какие-нибудь файлы то они в проекте тоже появлялись.
Максим Федоров, поищите, пожалуйста. Вот сейчас опять решил вернуться к Docker. Хочу определить для себя нужный конфиг.. И то о чем мы с вами говорили, то что нужно... Поэтому жду с нетерпением.. Это мне бы очень сильно помогло в освоении и понимании.
Максим Федоров, я вот надкнулся на nginx-proxy (пример использования). Проблему с доменами и связки nginx + apache она решает очень просто. Нужно только теперь придумать, как автоматизировать изменения файла hosts чтобы домены норм работали.
Docker умирает, PHP умирает, Java умирает, всё умирает, и Солнце скоро потухнет. Впрочем, это всё неважно, так как для локальной разработки не нужен ни докер, ни MAMP, ни Open Server Panel.
Суть ваших мыслей в чем? То что взял скачал каждый компонент (php, apache, nginx, mysql) с официального сайта и поставил локально без всяких помощников? Разверните, пожалуйста, свой ответ. Спасибо.
CaptainJustness, либо из пакетного менеджера поставил, либо скачал архив, распаковал его куда удобно и запускаешь в нужный момент. Использовать систему виртуализации для автоматизация выполнения пары-тройки команд в консоли - это как-то слишком.
Тут другой вопрос - далеко не все веб-разработчики хотят с консолью связываться в принципе. И для них скачать и установить MAMP или тот же OpenServer проще, чем что-то делать в консоли. Как говорится, между мышкой и клавиатурой всегда выберут мышку, хотя бы потому, что там одна рука задействована и её даже поднимать не нужно)
Сергей Мартыненко, а если допустим, я хочу Clickhouse прикрутить? Средства MAMP уже не помогут это сделать. И плюс в MAMP Pro только MySQL. А MariaDB там нет. Кто-то скажет что это одно и тоже, нифига это не одно и тоже уже давно)
Сергей Мартыненко, да фиг с ней с консолью... когда в разных проектах используются разные версии ВСЕГО а параллльно они жить не могут — вот тут жопа...
Глюкъ Виртуален, писал на чёртовой прорве языков самый разный софт под пожалуй все виды операционных систем, сталкивался с такими проблемами только на Ассемблере, Сях и Плюсах при наличии зависимостей от системных библиотек. Упомянутый автором вопроса MAMP - это PHP и Python, которые имеют собственные средства изоляции, так что нет никаких проблем вести кучу проектов с разными версиями всего.
Про то, что Docker умирает пишут малообразованные.
Docker очень даже живет, просто он изменил политику предоставления услуг и стал предоставлять свои технологии за денежку.
На мой взгляд Docker единственный приемлемый вариант для развертывания разного рода сервисов с разветвленной архитектурой. Вкупе с Docker Compose вообще идеальный вариант.