Часто встречаю много проблем при развертывании какого либо проекта, завернутого в докер, хотя по идее, должно быть наоборот, а все потому, что не до конца понимаю, как он работает. Допустим, есть проект на ларе, при клонировании репозитория, папочки vendor и node_modules отсутсуют, точно так же, как и файл .env. Правильно ли я понимаю, что при сборке контейнеров, по дефолту, эти папки и файл не забилдятся, то есть перед сборкой контейнеров нужно проделать какую-то работу, для корректого развертывания?
Понимаю, вопрос достаточно абстрактный, но в целом, что надо проделать после клонирования репозитория, но до билда контейнеров, в случае, если это проект на ларе?
папочки vendor и node_modules отсутсуют, точно так же, как и файл .env
Во время сборки контейнера тебе надо делать npm install/npm ci и прочее, чтобы выкачать зависимости и собрать все артефакты.
С .env аналогично - ты должен явно его скопировать внутрь контейнера, во время сборки (а лучше оставить пространство для настроек и использовать переменные среды, ИМХО).
Попробуй поискать на гитхабе, как другие люди деплоятся в докером - уверен, примеров таких не мало.
А что значит, "скопировать внутрь контейнера"? То есть до сборки, полностью собрать проект(npm,composer...) и только потом билдить докер? По идее ведь, если это сделать хоть до, хоть после, зайдя внутрь контейнера, того же nginx, мы увидим эти папки
Это нужно для того, чтобы ты мог собрать свой докер image для работы в разных средах, например в development или testing или production environments. Передать билду какие-то важные dns, параметры, пути к базам данных, пароли для них итд.
Мы например разносим докер имеджи на два. В первом выполняется npm ci и идут юнит тесты... а потом этот уже готовый имедж используется для подготовки к деплоймент, где делается npm run build c соответствующими переменными, под требуемую среду.