Развертывание приложений 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.