Как быть с статичными файлами в docker контейнере с php-fpm?
Идеология docker гласит "один процесс — один контейнер". Есть php приложение с фронтом. Т.е. внутри есть и php код, js, css и парочко мелких картинок. Мы создали образ docker на основе php-fpm и запустили сам php-fpm. Связали его с внешним nginx. Php код отрабатывает. Но как теперь достучатся до статичных файлов? Видел контейнеры с nginx внутри и он выдает картинки. Но как быть с PHP приложением?
По хорошему надо бы разделить на фронт и бэкенд. Но сейчас это невозможно)
Точно так же с воркерами. Нужно держать супервизор чтобы он держал таски. Делать для воркеров отдельный контейнер или засунуть fpm и circus в один контейнер?
texttotext, да, именно так. Философия такая - контейнер после пересоздания должен функционировать без дополнителтных действий, т.е. конфиги и файлы проекта должны быть в volume
Дмитрий Шицков, конфиги да. Но файлы... Т.е. код с гитом должен лежать в папке на хост машине. А потом все сразу бильдиться и запускается.
Как работает volume в общих чертах:
1. Запускается контейнер
2. Внутри контейнера создается папка указанная в volume
3. Данные из volume папки хост машины копируются в папку в контейнере. При этом стараясь сохранить uid и gid пользователя.
Это означает что код должен лежать отдельно от контейнера. Но от этого как-то теряется смысл делать бильды и пушить их в докер репозиторий. Так же теряется переносимость приложения. Один из ключевых моментов докера это же переносимость. Любой должен иметь возможность скачать образ и запустить.
А от Вашего способа все это как то теряется. Вы это у себя на боевом проекте используете?
Это означает что код должен лежать отдельно от контейнера. Но от этого как-то теряется смысл делать бильды и пушить их в докер репозиторий. Так же теряется переносимость приложения. Один из ключевых моментов докера это же переносимость. Любой должен иметь возможность скачать образ и запустить.
Понял специфику. Если необходима переносимость, то контейнер должен быть самодостаточным. Если без nginx он не способен функционировать, nginx должен быть в контейнере. Это лишь моё мнение, с докером я недавно.
Если говорить о нашем проде - да, проект собирается в контейнер и деплоится, наружу торчат только конфиги. Проект на nodejs, статику самостоятельно способен отдать фронту.