Что там сложного? Уже напилили полную коробочку инструментов. Разделять фронт и бэк сейчас сильно проще.
Вопрос мне кажется не совсем правильный.
Нагрузка на статичный контент? Это шутка?
Почему ларавел? Почему вообще php или в чем разница php laravel или php wordpress? Laravel заставит написать вас просто все ручками дав набор инструментов, но никто не запрещает так же ручками написать и в wordpress, просто то что это laravel это не значит что ручками напишут нормально =)))
В чем будет ускорение на примерах от PerconaDB (fork mysql) или даже mysql8?
С сотней запросов в секунду в целом я думаю справится любая CMS на выделенном сервере, у нас битрикс тянет больше 2500 запросов в секунду и это интернет магазин, а не статический контент =))
От куда вы эту ерунду берете? Для того чтобы быстро работал нормальный ЧПУ надо на него повесить индекс, разница от числа будет только в размерах этого индекса на жестком диске так как число занимает меньше байт.
По своему опыту работы в хайлоад проектах могу сказать что профиль нагрузки разный на разных проектах и не бывает чтобы CMS или работала или не работала, есть какие то участки где алгоритм не оптимален или делается больше запросов или запрос тяжелый и так далее, то есть оптимизация как правило происходит по факту появления проблем, изначально заниматься такой ерундой нет смысла, в вертикальном масштабировании расти можно очень долго, а потом просто БД вынести на отдельный сервер и снова расти долго =)) Ну а если упретесь в ресурсы всегда можно переписать проект на го или расте =))
Я тоже думал про расбери пи для домашнего сервера, но какая то дика дорогая штука за такие скромные параметры, в итоге я поставил домой себе вот такое чудо докупил в dns памяти и винт и коробочка стоит на холодильнике =)) Но я не использую под сайты, у меня там стоит всякие домашние штуковины, например ПО для управления умным домом, файло облака, "шары", потоковое видео с торрентов и так далее, в общем чисто домашние прикладные задачки, но Intel N100 мне понравился, там хоть вентилятор есть но я пока его ни разу не слышал вот его нагрузка сейчас
Хотя у меня там и MQTT брокеры которые обслуживают с десяток дачиков и релюшек, базы данных, вэб серверы для интерфейсов и так далее, плюс запас еще по мощности есть
Сервер с одним ядром это либо VPN либо раздача статики, для сервера где есть несколько приоритетных процессов одно ядро это катастрофа по сути, они будут его нещадно делить, а при этом есть еще и системные задачи. VPS для сайтов нужно хотя бы 2 ядра минимум и вот тут наверное 2 ядра по 5ГГц будет лучше чем 4 ядра по 2.8ГГц, хотя опять же лучше проверить тестами так как профиль нагрузки у всех разный, например принять 1000 запросов от клиентов на 4 ядрах будет быстрее, но в рамках одного запроса частота будет решать. Для простоты объяснения герцы это количество операция в секунду которые может сделать процессор, то есть 1 ГГц = 1 000 000 000 операций в секунду на процессоре
У пользователя в докере нет прав на файлы из-за того, что он не знает группы.
Попробую.
Вышло ранее добавлением группы в работающий контейнер и рестартом php/nginx.
Но после перезапуска контейнера все пропадает.
Вам надо понимать, что такое пользователь и группа в linux это по сути какой то ID числовой. В контейнере не свои ID, а точно такие же. То есть если у вас есть на хост системе пользователь например webuser с ID 1001, то в контейнере тоже надо создать пользователя с 1001 ID, тогда у него будут такие же права для файлов. Выше способ я показал как можно запустить процесс от того же пользователя, у меня в продакшене так работает. Ну и не правильно чтобы nginx и php были в одном контейнере. Путь докера (docker way) это то, что в одном контейнере один основной процесс.
можно ли таким образом с помощью докера управлять ресурсами? например выделить для PID 1 скажем 4 ядра и столько-то памяти, а для PID 2 побольше
да можно ограничить контейнеру ресурсы https://docs.docker.com/config/containers/resource_constraints/
Смотря для чего вам это надо, запустить основной процесс от пользователя и его группы в композ (версии 3) можно вот так
PS. Да забыл, только надо экспортунть эти переменные окружения
export UID="$(id -u)"export GID="$(id -g)"
Вы немного не поняли суть докера, это не виртуализация как например виртуалбокс, задача докера изолировать 1 процесс с PID 1 только за ним он и следит. То есть докер контейнер это запуск одной программы изолированно, например openssh-server, для примера nginx + php-fpm+mysql это будет 3 разных докер контейнера, при том если хотите lets encrypt это будет четвертый контейнер, крон пятый и так далее.
Сам по себе контейнер это запуск образа, а образ это "слоеный пирог" как таковой, в сам контейнер ничего писать нельзя он не сохраняет состояние, можно писать только в образ слоями, для этого есть файл Dockerfile каждая команда в нем это новый слой в пироге, только там можно дополнительно как то расширить образ новыми "слоями пирога" и на основе нового образа запустить контейнер.
Оверхеда практически никакого нет, вся эта изоляция делается на уровне ядра линукса хостовой системы, именно линукса, потому что в остальных системах это не совсем чистый докер, а Docker Desktop (докер на костылях).
Преимущество докера раскрывается на самом деле в управлении окружением, вы можете запустить с десяток php-fpm процессов различных версий, библиотек и конфигураций, что гарантирует (почти) одинаковое поведение на любой хост системе где установлен докер. Так же это помогает именно раскатки приложения в продакшене, вы можете подготовить и сконфигурировать образ для приложения, потом при изменениях в гите делать слой в образе накатывая туда код и записывать готовый образ с приложением в регистре (registry - хранилище образов), а системы деплоя уже увидят что изменился образ и подтянут его, запустят 100500 контейнеров после чего переключат на них трафик, так что деплой приложений стал простым и контролируемым. Но все это к стейтлесс частям приложения, стейтфул системы (базы данных, хранилища файловые) в докер как правило не запихивают для этого есть другие инструменты.