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

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

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

Сообщение Corpsepk » 2019.04.22, 22:26

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

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

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

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

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

Подскажите пожалуйста, я что то упускаю и возможно есть какой то простой вариант?
Спасибо.

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

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

Сообщение samdark » 2019.04.22, 23:51

Если ассеты одинаковы, почему важно чтобы они были общими?

Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

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

Сообщение Corpsepk » 2019.04.23, 12:58

Если ассеты одинаковы, почему важно чтобы они были общими?
Им не обязательно быть общими, дело в том, что я не вижу способа сгенерировать все ассеты на этапе сборки докер контейнера.
Получается что ассеты генерируются динамически, в таком случае их как то нужно прокидывать в nginx...

Аватара пользователя
ElisDN
Сообщения: 5233
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN » 2019.04.23, 13:15

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

Либо оставить всё как есть и просто кешировать динамически в Nginx как здесь вроде:

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

location ~* \.(?:ico|gif|jpe?g|png|woff2?|eot|otf|ttf|svg|js|css)$ {
    fastcgi_pass php-fpm:9000;
    fastcgi_index index.php;
    ...
    fastcgi_cache fastcgi_cache;
    fastcgi_cache_valid 7d;
}

location / {
    try_files $uri /index.php?$args;
}

location ~ \.php$ {
    fastcgi_pass php-fpm:9000;
    fastcgi_index index.php;
    ...
}

Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

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

Сообщение Corpsepk » 2019.04.23, 13:21

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

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

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

Сообщение samdark » 2019.04.23, 15:17

В каком-то из докладов говорили, что этот функционал будет выпилен из yii3. Наверное не стоит на него полагаться.
Почему? Полагайтесь, раз он есть.

Corpsepk
Сообщения: 7
Зарегистрирован: 2012.12.07, 15:53

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

Сообщение Corpsepk » 2019.04.23, 16:15

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

masson
Сообщения: 418
Зарегистрирован: 2012.07.03, 15:59

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

Сообщение masson » 2019.05.31, 20:21

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

Ответить