CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Говорим о серверах, развёртывании, нагрузках, выборе и использовании разных технологий и продуктов
Ответить
Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение Corpsepk »

Здравствуйте!

Как было раньше.
Условно говоря, на хостовой машине поднималось два контейнера:
  • php-fpm
  • nginx
В них пробрасывался “volume” /app:/app
При деплое Capistrano или тот же Deployer делал симлинк на новую ревизию на директорию /app, котнейнеры обновлялись, всё работало как часики.

Сейчас «лучшие практики» говорят о том, что нужно собирать полноценные контейнеры, класть в них ВСЁ что может понадобиться и деплоить целиком контейнеры.

В такой схеме всё хорошо, вроде всё понятно, но столкнулся со следующим вопросом, а что делать ассетами (которые создаются в web/assets)? Ведь статику отдает nginx, как собрать контейнер со всеми ассетами?

Мне видится три варианта:
1. Сгенерировать их на этапе сборки, но если за свой код я могу как то отвечать и собрать ассеты на этапе сборки, то помнить обо всех сторонних модулях – проблема
2. Класть ассеты на S3. Вариант годный, но в малобюджетном проекте это дорого
3. Создать volume «assets» и шарить его между php-fpm и nginx

Подскажите пожалуйста, я что то упускаю и возможно есть какой то простой вариант?
Спасибо.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение samdark »

Если ассеты одинаковы, почему важно чтобы они были общими?
Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение Corpsepk »

Если ассеты одинаковы, почему важно чтобы они были общими?
Им не обязательно быть общими, дело в том, что я не вижу способа сгенерировать все ассеты на этапе сборки докер контейнера.
Получается что ассеты генерируются динамически, в таком случае их как то нужно прокидывать в nginx...
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение ElisDN »

Либо заморочиться со сборкой ассетов, всё же перечислив все бандлы сторонних модулей. И собранную в php-cli папку web/assets через multistage building забрать в образ nginx.

Либо можно объявить вольюм assets и подключить его в оба контейнера:

Код: Выделить всё

services:
    nginx:
        ...
        volumes:
            - assets:/app/public/assets:ro
    php-fpm:
        ...
        volumes:
            - assets:/app/public/assets
volumes:
    assets:
При этом не включать linkAssets в конфиге у assetManager.
Последний раз редактировалось ElisDN 2021.07.15, 17:38, всего редактировалось 6 раз.
Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение Corpsepk »

Либо заморочиться со сборкой ассетов, всё же перечислив все бандлы сторонних модулей. И собранную в php-cli папку web/assets через multistage building забрать в образ nginx.
В каком-то из докладов говорили, что этот функционал будет выпилен из yii3. Наверное не стоит на него полагаться.
Либо оставить всё как есть и просто кешировать динамически в Nginx как здесь вроде
А это интересный вариант, почитаю, спасибо!
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение samdark »

В каком-то из докладов говорили, что этот функционал будет выпилен из yii3. Наверное не стоит на него полагаться.
Почему? Полагайтесь, раз он есть.
Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение Corpsepk »

Да, судя по всему сборщик ассетов для меня будет лучшим вариантом.
Почему? Полагайтесь, раз он есть.
П.с.
Логика была такая - если сборщик ассетов выпилят, значит при переезде на yii3 _еще_ что то придется заменять, если можно этого избежать, то лучше избегать :)
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: CI/CD Docker. Как шарить web/assets между nginx/php-fpm?

Сообщение masson »

Corpsepk писал(а): 2019.04.22, 22:26 Сейчас «лучшие практики» говорят о том, что нужно собирать полноценные контейнеры, класть в них ВСЁ что может понадобиться и деплоить целиком контейнеры.
Киньте пожалуйста ссылок на лучшие практики. Я только недавно начал осваивать докер, и не совсем понял фразу "нужно собирать полноценные контейнеры, класть в них ВСЁ что может понадобиться". Что это значит? До сих пор везде встречал только "Одна задача - один контейнер, а изменяемые данные монтируются". Киньте пожалуйста ссылок на лучшие практики, и если не затруднит, еще примеры ваших файлов Dockerfile & docker-compose
Ответить