Когда мы на основе образа билдим и пушим на регистри свой собственный образ, что туда сохраняется ? например у нас есть образ php-fpm
1) Сохраняются ли в образе установленные зависимости (композер, бибилотеки, например pdo и тд) ?
2) Сохраняются ли файлы, появившиеся в результате выполнения команд из dockerfile, нарпимер composer install и тд ?
3) Сохраняется ли код самого проекта внутри образа ? Например я видел проекты, которые устанавливаются из образов со своего регистри, где нет волумов до папки с самим проектом, а только до папки public. То есть весь код проекта как то зашит внутри образа? Как это делают и для чего ?
4) Для чего вообще обычно используются свои образы и какой сценарий ? Билдится образ, отправляется в регистри, а потом, например поднимается этот образ на тестовом серваке, или на проде ? То есть запушенный образ билдить не надо, он уже готовый, надо только запустить ? И в него уже внутрь вшиты все файлы. которые нужны для работы проекта ?
Есть хорошая фраза от какого то японяки: "Хорошо сделанный продукт может задержаться, и скорее всего этим вызовет краткое недовольство, но он будет хороший, а Быстро выпущенный продукт, даже если выйдет быстро, но будет говном на всегда"
runprogr
это был очень правильный совет. Потому что не нужно думать "сохраняется-не сохраняется", это вообще не тот уровень, на котором можно что-то понять.
Например, новые пользователи докера обычно очень удивляются тому факту, что следующая комбинация:
RUN wget -O /tmp.file ссылка_на_гигабайт_данных
RUN rm /tmp.file
всё равно приводит к утяжелению образа на гигабайт, хотя, казалось бы, этот гигабайт затем удаляется. Потому что каждый RUN создаёт новый fsLayer в слоённой файловой системе образа.
Именно поэтому все установки дополнительного софта в Dockerfile при правильном написании делаются в виде одного RUN с серией команд через &&.
Если вам не нужен докер, не значит что он не нужен ни кому если там пхп.
Просто как правило, докер используется для того, что бы конфигурация была максимальна приближена к той, которая используется на сервере, либо для того, что бы она совпадала у всех програмистов, и не появлялись баги или странное поведение из за неправильно настроенного окружения или нехватки чего либо у какого либо из программистов.
Единственное что человек по наивности думает что докер это тык тык и все пошло поехало ) Для запуска хелловорд, оно так и есть... а вот для мало мальски нормального проэкта, там где участвует мускуль, кеши, очереди или что-то еще там много чего нужно и камешкоф хватает подороге...
Sanes, дело не в php, а в окружении. Забытые библиотеки, переменные окружения, хардкод, неправильные пути, кодировки, конфигурации .... миллион всего. Я в тебе прямо разочаровываюсь после таких заявлений