Как использовать Composer с git pull, чтобы class not found не пришел

Я использую Laravel 5.6.

Процесс развертывания моего текущего кода выглядит следующим образом

  1. Внесены некоторые изменения в файл
  2. Зафиксируйте и нажмите на ветку.
  3. Как только все будет идеально, объедините его с мастером и перетащите основную ветку на сервер производства кода (где находится мой код).

Моя проблема

  1. Если у меня есть некоторые зависимости, которые поддерживаются composer. Я просто добавляю его в текущую ветку и вношу изменения в другие файлы.
  2. Когда я объединяю его с мастером и загружаю на рабочий сервер, мне нужно вручную запустить команду обновления композитора.
  3. Сервер выдает ошибки, когда мы пытаемся получить к нему доступ, потому что его класс зависимостей или поставщик услуг не найден (поскольку нам нужно добавить его в config/app.php в Laravel). Когда он обновляет зависимости композитора.
  4. После обновления работает отлично.
  5. Поэтому я хочу избежать этой 5-10-секундной ошибки, возникающей при обновлении зависимостей композитора.

у меня есть два варианта

  1. Переведите приложение в режим обслуживания при обновлении кода. -> Я не могу этого сделать.
  2. Каждый раз, когда есть зависимости, загружайте их, используя два слияния. -> Я не хочу этого делать.

Существуют ли какие-либо другие передовые методы решения этой проблемы, чтобы мы могли избежать таких ошибок.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
938
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Нет, ты не знаешь. Вы должны бежать только

> composer install

на рабочем сервере, чтобы убедиться, что зависимости композиторов обновлены с учетом изменений.

Чтобы избежать этой проблемы, лучше всего развертывать каждый раз в новой папке. Затем, когда развертывание завершено, вы переключаете папку.

Это можно сделать с помощью символической ссылки или аналогичной:

deploys
    1551270000
    1551280000
live > deploys/1551280000

Затем сделайте новое развертывание (1551290000):

deploys
    1551270000
    1551280000
    1551290000
live > deploys/1551280000

Затем, когда все будет готово, измените символическую ссылку:

deploys
    1551270000
    1551280000
    1551290000
live > deploys/1551290000

Это то, что делают Капистрано и другие. Я бы рекомендовал использовать такой инструмент, а не пытаться написать свой собственный — эта проблема уже решена.

Ответ принят как подходящий

Вы никогда не должны обновляться на рабочем сервере, просто установите композитор. Вы можете подключить это к своему действию слияния git в зависимости от того, как вы развертываете его в рабочей среде (CI/CD, скрипты или все вручную?). Вот документация для git hooks: https://git-scm.com/docs/githooks это для git-хуков после слияния: https://git-scm.com/docs/gitooks#_post_merge

Другие вопросы по теме