部署者2应用程序一个主机

时间:2017-10-12 07:45:36

标签: angularjs symfony deployment php-deployer

假设:

  • 单页面前端应用程序(angularJS)& API后端服务(Symfony3)
  • 一个主持一个舞台,主持前面和前面两个主机。后端
  • 部署者版本6.0.3

问题是:如何使用以下格式的命令来部署它们:dep deploy [frontend|backend]。 现在的问题是:你必须将它们描述为2个独立的主机,因为它们使用不同的参数repository&至少deploy_path。然后,如果你将它们保存在一个文件中,你就不能只有2个后端和后端任务。前端如此描述:

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个参数,它只是覆盖了文件中最后一个主机配置的deploy参数。

就此而言,我使用的是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.phpdep deploy stage -f [frontend|backend].php,但对于日常操作来说,这很不方便,比如数据库导入/导出......

请分享您对此问题的意见或解决方案

1 个答案:

答案 0 :(得分:0)

定义任务:前端和后端,然后你可以简单地执行:dep backend hostname / stage或dep frontend。

dep命令的第二个参数是任务名称,而不是固定的单词deploy。