Size: a a a

2020 October 22

👤U

👤 User in symfony
Джентельмены, вопрос по CI с докером.
Я два подхода пока нашел:
Собирается php-fpm, например, и прямо внутрь него помещается код проекта. Удобно в плане релиз сбойный - просто быстро заменяем image на stable и все. Сайт недоступен доли секунд.
Второй - как в php deployer. Контейнер php-fpm содержит только собственно его и необходимые пакеты. А релизы в папках с симлинками хранятся. Тоже, в принципе, быстрый rollback.
Есть еще какие-то хорошие кейсы? Первый вариант до 10 минут релиз растягивает, зато сервер сам не нагружается сборкой ассетов, композером.
источник

VS

Vyacheslav Startsev in symfony
не собирай ассеты и вендор на проде
сборку делай на отдельном сервере, а на прод уже будешь заливать собранный код и менять симлинк
деплоер вроде так умеет
источник

ПГ

Павел Г. in symfony
Vyacheslav Startsev
не собирай ассеты и вендор на проде
сборку делай на отдельном сервере, а на прод уже будешь заливать собранный код и менять симлинк
деплоер вроде так умеет
Деплоер в рецепте симфони собирает вендор на боевом. Конечно можно исхитриться и поменять, но надо ли.
П.С. в репецпте симфони нмп вообще нет, так как на проде не нужны node_modules то вот его я загружаю отдельно, собираю, а потом сборку гружу.
источник

👤U

👤 User in symfony
Ненене. На боевом нельзя собирать.
источник

👤U

👤 User in symfony
Пока адекватно выглядит сборка на промежуточном.
источник

ПГ

Павел Г. in symfony
👤 User
Ненене. На боевом нельзя собирать.
В чем причина, кроме обязательности наличия композера на проде?
источник

ИГ

Иван Ганцев... in symfony
👤 User
Джентельмены, вопрос по CI с докером.
Я два подхода пока нашел:
Собирается php-fpm, например, и прямо внутрь него помещается код проекта. Удобно в плане релиз сбойный - просто быстро заменяем image на stable и все. Сайт недоступен доли секунд.
Второй - как в php deployer. Контейнер php-fpm содержит только собственно его и необходимые пакеты. А релизы в папках с симлинками хранятся. Тоже, в принципе, быстрый rollback.
Есть еще какие-то хорошие кейсы? Первый вариант до 10 минут релиз растягивает, зато сервер сам не нагружается сборкой ассетов, композером.
первый вариант. Сборка образа. Затем тесты и другие проверки. После чего только деплой. Про затягивание релиза до 10 минут - нужно максимально задействовать кэш слоев при сборке. Далеко не в каждом коммите зависимости меняются
источник

👤U

👤 User in symfony
Webpack encore дофига жрет ресурсов
источник

👤U

👤 User in symfony
Иван Ганцев
первый вариант. Сборка образа. Затем тесты и другие проверки. После чего только деплой. Про затягивание релиза до 10 минут - нужно максимально задействовать кэш слоев при сборке. Далеко не в каждом коммите зависимости меняются
Итак несколько слоев. Долго encore отрабатывает. Ассеты уже вытащили в отдельный слой.
источник

ИГ

Иван Ганцев... in symfony
👤 User
Итак несколько слоев. Долго encore отрабатывает. Ассеты уже вытащили в отдельный слой.
Для фронта npm кэшируется в отдельном слое, а процесс билда как ускорить - сами не знаем, кроме как закидыванием ресурсами. Поменялся код, надо и сборку делать значит, от этого не уйти
источник

👤U

👤 User in symfony
На самом деле промежуточный сервер чисто под сборки решает этот головняк
источник

👤U

👤 User in symfony
Ну кинул я ему задачу на сборку. Ну даже если 10 минут на все уйдет. Зато моя тачка не напряжена.
источник

ИГ

Иван Ганцев... in symfony
Собирать конечно нужно где угодно, но не на проде) сборка фронта проц хорошо отжирает, продовские тачки не должны это терпеть. На прод уже поступать должен готовый образ nginx с билдом как статикой внутри для фронта, собранный через multistage. Если фронт конечно отдельно от бэка, не знаю как у вас.
источник

ПГ

Павел Г. in symfony
Я речь про вендор вел, а не про сборку фронта. Вендор вы тоже грузите готовый?
источник

ПГ

Павел Г. in symfony
А вообще с CI|CD головняк по времени. Проект мелкий, а каждая сборка в гитлабе и деплой через деплоер (без фронта) занимает по 8 минут. Дичь какая то :( вроде и кэш стоит.
источник

👤U

👤 User in symfony
Так вот то-то и оно. Манажерьё просит поправить одну букву и все. 8 минут деплоя.
источник

ИГ

Иван Ганцев... in symfony
Павел Г.
Я речь про вендор вел, а не про сборку фронта. Вендор вы тоже грузите готовый?
образ для прода должен быть самодостаточным, т.е. содержать внутри все, что ему необходимо для работы. Запустил с нужными переменными энвайромента, и все работает. Поэтому composer отрабатывает при сборке образа php-fpm. Сначала в образ устанавливаются системные зависимости, затем копируются composer.json|lock + symfony.lock, и запускается подтягивание зависимостей отдельным слоем. И уже тосле копируется код проекта. Тогда vendor будет кешироваться
источник

👤U

👤 User in symfony
А автолоад
источник

AA

Artem Aleksandrov in symfony
👤 User
Так вот то-то и оно. Манажерьё просит поправить одну букву и все. 8 минут деплоя.
8 минут, мне бы ваши проблемы. Это вы ещё тесты не запускаете
источник

ПГ

Павел Г. in symfony
Artem Aleksandrov
8 минут, мне бы ваши проблемы. Это вы ещё тесты не запускаете
С ними  и с анализом ))) минус парочку минут из этого времени)) но смысл в том, что проект то маленький. Я вот и думаю, что было бы, если он был больше чем нихера.
источник