@yellow_pus

Как устроен докер при развертывании?

Часто встречаю много проблем при развертывании какого либо проекта, завернутого в докер, хотя по идее, должно быть наоборот, а все потому, что не до конца понимаю, как он работает. Допустим, есть проект на ларе, при клонировании репозитория, папочки vendor и node_modules отсутсуют, точно так же, как и файл .env. Правильно ли я понимаю, что при сборке контейнеров, по дефолту, эти папки и файл не забилдятся, то есть перед сборкой контейнеров нужно проделать какую-то работу, для корректого развертывания?
Понимаю, вопрос достаточно абстрактный, но в целом, что надо проделать после клонирования репозитория, но до билда контейнеров, в случае, если это проект на ларе?
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
vabka
@vabka
Токсичный шарпист
папочки vendor и node_modules отсутсуют, точно так же, как и файл .env

Во время сборки контейнера тебе надо делать npm install/npm ci и прочее, чтобы выкачать зависимости и собрать все артефакты.
С .env аналогично - ты должен явно его скопировать внутрь контейнера, во время сборки (а лучше оставить пространство для настроек и использовать переменные среды, ИМХО).

Попробуй поискать на гитхабе, как другие люди деплоятся в докером - уверен, примеров таких не мало.
Ответ написан
Viji
@Viji
Associate DevOps Engineer
ну, вот например здесь

https://milanwittpohl.com/projects/tutorials/Full-...

я еще советую определить переменные важные для твоего билда и во время команды
docker build передавать их

docker build --build-arg var_name=${VARIABLE_NAME}

вот пояснения
https://vsupalov.com/docker-build-pass-environment....

Это нужно для того, чтобы ты мог собрать свой докер image для работы в разных средах, например в development или testing или production environments. Передать билду какие-то важные dns, параметры, пути к базам данных, пароли для них итд.

Мы например разносим докер имеджи на два. В первом выполняется npm ci и идут юнит тесты... а потом этот уже готовый имедж используется для подготовки к деплоймент, где делается npm run build c соответствующими переменными, под требуемую среду.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы