Всем привет!
Заголовок немного желтушный, конечно же. Если у вас не установлены docker и docker-compose, то конечно же придется потратить немного времени на их установку, и в 5 минут уже будет точно не уложиться. Но если стоят и сеть хорошая, то вполне можно...
Итак, сразу к делу (как будто у нас докер уже имеется и мы знаем как с ним работать).
1. Скачиваем репозиторий с субмодулями
3. Запускаем дев-сайт
или сразу боевой
Все. Больше делать ничего не надо.
Остается только дождаться, когда скачаются все зависимости, запустится mysql и prisma-сервер, развернется сайт (в том числе скачаются для него все js-зависимости), продеплоится схема, запустится прокси-сервер caddy (альтернатива nginx, которая из коробки умеет в let's encrypt) и т.д. и т.п. В общем, все то, что ранее вам приходилось бы самим делать, а сейчас вот просто надо посидеть подождать... Помните две предыдущие статьи Разворачиваем Graphcool Prisma на голом железе и Разворачиваем сайт с нуля на prisma-cms? Вот теперь этого всего делать не надо. Все это теперь запихано в докер и не надо париться на счет установки правильной версии ПО, конфигурирования и т.п. Я не проверял, но по идее это и под виндой должно работать теперь, если у вас докер установлен.
Самое сложное здесь сейчас - это понимание того, как работает докер. Если вы с ним не знакомы и не используете, то самое время начинать его изучать, потому что дальше будет очень много на нем завязано. И понятие "оркестрация" так же должно о чем-то говорить (спойлер: это не относится к музыкальному искусству).
Дев- и прод- сайт
Есть несколько существенных отличий между работающими дев- и прод- сайтами.
1. Дев-сайт деплоится в дев-базу (dev_endpoint), а прод соответственно в боевую базу (prod_endpoint).
Хотя можно и вручную задать при запуске, например так:
2. В дев-сайте создается сим-линк на папку сырцов src/, плюс сам сайт запускается в дев-режиме, с hot-reload и т.п., что позволяет локально править исходники, как будто в контейнере, при этом сайт будет сразу реагировать на изменения и перегружаться автоматически (кто работал с react-scripts или типа того, поймет).
3. При запуске прод-сайта, фронт полностью пересобирается с минификацией и т.п., то есть на выходе скрипты и стили будут весить минимум.
4. Как я говорил, здесь используется прокси-сервер caddy (контейнер proxy). Более подробно про его настройку я расскажу позже в отдельном топике, но сейчас отмечу, что в дев-режиме у него вот такая раскладка портов расписана:
2015 - фронт сайта
2016 - API сайта
2016 - PhpMyAdmin
А в боевом режиме он уже слушает порты 80 и 443. При чем если вы будете запускать на публичном домене и пропишите конфигурацию именно для https://ваш-домен, то сервер автоматически и самостоятельно запросит для него ssl-сертификат и он будет валидный :)
Настройка и запуск своего собственного сайта на базе prisma-cms
По умолчанию проект тянет за собой @prisma-cms/boilerplate (см. .gitmodules). То есть, как и прежде, сам сайт я публикую в самостоятельный репозиторий. Но как быть, если вы захотели на его основе создать свой собственный сайт, со своими плюшками?
Помните статью Разворачиваем у себя копию MODX-Клуба (prisma-cms.com)? prisma-cms.com тоже ведь на базе @prisma-cms/boilerplate делается. То есть был сделан клон проекта и самостоятельно развивается, но когда в boilerplate добавляются новые коммиты, я их тяну и в prisma-cms.com.
Так вот, для примера мы и добавим prisma-cms.com в наш проект.
1. Добавляем его как субмодуль.
2. Или в .env прописываем SITE=prisma-cms.com, или просто его указываем при вызове.
Таким образом в контейнер будет скопирована не папка prisma-cms/boilerplate/, а prisma-cms/prisma-cms.com/, то есть будет работать наш собственный сайт, в котором можно делать что угодно (хотя на самом деле и в boilerplate можно делать что угодно, но там из коробки меньше функционала).
Редактирование шаблонов
Когда у нас сайт запустится, он конечно же еще будет пустой. То есть мы должны сами прописать шаблоны и логику. На этот счет читайте внимательно эту статью. Но если вы запускаете у себя prisma-cms.com, то для быстро запуска можно обойтись всего-лишь вот таким шаблоном:
Тут сразу будет и шапка с основным меню, и обработка основных страниц (блоги, топики, проекты, задачи, пользователи и т.п.).
В общем, экспериментируйте, и спрашивайте если что-то не понятно или не получается. Чем больше интереса будет с вашей стороны, тем больше я буду рассказывать и показывать (а показал я сейчас оооочень мало).
P.S. Требования по версии докера:
- docker v 19+
- docker-compose v 1.25+
Улучшил скрипты. Теперь downtime при деплое проекта составляет всего несколько секунд.