Развертывание приложений 2 на одном хосте

Дано:

  • Одностраничное приложение веб-интерфейса (angularJS) и служба API-интерфейса (Symfony3)
  • Один хост на одну сцену, на которой размещены как фронт, так и бэкэнд
  • Развертывание версии 6.0.3

Вопрос в том, как уметь развернуть их оба, используя следующий формат команды: dep deploy [frontend|backend], Проблема сейчас в том, что вы должны описать их как 2 отдельных хоста, так как они используют разные параметры, repository & deploy_path по крайней мере. Тогда, если вы храните их в одном файле, вы не можете просто описать 2 задачи для backend & frontend:

task('deploy', [
    'deploy:info',
    .
    .
    .
])->onHosts(['[frontend|backend]']);

Я имею в виду, вы можете, но тогда в командной строке ты напишешь dep deploy stage --hosts frontend & dep deploy stage --hosts backend любой из них потерпит неудачу с ошибкой:

  No task will be executed, because the selected hosts do not meet the conditions of the tasks.

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


И ОК. Я тоже могу обойти это

task('deploy:frontend', [
    'deploy:info',
    .
    .
    .
]);
task('deploy:backend', [
    'deploy:info',
    .
    .
    .
]);

Таким образом, будет логично запустить его с dep deploy:[frontend|backend] stage, НО поскольку оба интерфейса и бэкэнд живут на одном сервере и у них обоих deploy_path параметры, например, он просто переопределяет параметры развертывания с последней конфигурацией хоста в файле.


В этом отношении то, что я использовал onHosts() функция с некоторыми настройками объявлений хостов;

host('backend')
    ->hostname('host.com')
host('frontend')
    ->hostname('host.com')

& 2 задачи определены:

task('deploy:[frontend|backend]', [
    'deploy:info',
    .
    .
    .
])->onHosts(['[frontend|backend]']);

таким образом, вам придется развернуть так: dep deploy:[frontend|backend] stage --hosts [frontend|backend] что вы все согласны, это бессмысленно.

Мое дальнейшее предположение состоит в том, чтобы разделить развертывания на 2 файла как backend.php & frontend.php, dep deploy stage -f [frontend|backend].php, но для повседневных операций это неудобно, как импорт / экспорт базы данных...

Пожалуйста, поделитесь своим мнением или решением этой проблемы

1 ответ

Определите задачи: веб-интерфейс и бэкэнд, затем вы можете просто сделать: депонировать имя хоста /stage или dep веб-интерфейс.

Второй параметр команды dep - это имя задачи, а не фиксированное слово deploy.

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