繁体   English   中英

如何在Openshift上运行(或者我应该运行)Composer?

[英]How to run (or should I run) Composer on Openshift?

我试图在Openshift上创建ZendFramework的Skeleton应用程序。 我使用这些指令创建了一个PHP5应用程序并在本地克隆它。 我在存储库中克隆了ZendFramework框架应用程序,然后运行Composer以在本地安装依赖项。

然后我将我的存储库推送到Openshift,但是我收到以下错误消息:

Fatal error: Uncaught exception 'RuntimeException' with message
'Unable to load ZF2. Run `php composer.phar install`
or define a ZF2_PATH environment variable.' in
/var/lib/openshift/559d4d8f500446844700002b/app-
root/runtime/repo/init_autoloader.php:51 Stack trace: #0
/var/lib/openshift/559d4d8f500446844700002b/app-
root/runtime/repo/public/index.php(18): require() #1 {main} thrown in
/var/lib/openshift/559d4d8f500446844700002b/app-
root/runtime/repo/init_autoloader.php on line 51

这表明我需要在Openshift上运行Composer。 我该如何实现这一目标?

在我的本地存储库中, /vendor目录中填充了依赖项目录。 但是,在提交中忽略/vendor 我可以尝试提交并推送它,但这是正确的方法吗? 它看起来不干净。

基本上,您需要在OpenShift上自动执行每个构建的composer install

您可以通过在文件夹.openshift/markers添加名为use_composer的标记文件来完成此操作。

.openshift/markers/use_composer

参考: https//developers.openshift.com/en/php-markers.html


如果你需要做的不仅仅是composer install ,比如安装Composer,使用action_hooks是更好的选择。 它们允许使用bash脚本。

请参阅https://developers.openshift.com/en/managing-action-hooks.html

.openshift/action_hooks/build

#!/bin/bash

export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"

if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
    curl -s https://getcomposer.org/installer | php -- --install-dir=$OPENSHIFT_DATA_DIR
else
    php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi

( unset GIT_DIR ; cd $OPENSHIFT_REPO_DIR ; php $OPENSHIFT_DATA_DIR/composer.phar install )

安装依赖项的最佳方法是从操作挂钩,即在部署期间由盒式磁带运行的脚本。 我会使用deploy钩子:

#!/bin/bash
# @file
#   .openshift/action_hooks/deploy

COMPOSER_DIR="$OPENSHIFT_DATA_DIR/bin"

function install_composer() {
    echo 'Installing Composer'

    if [ ! -d "$COMPOSER_DIR" ]
    then
        mkdir -p $COMPOSER_DIR
    fi

    curl -s https://getcomposer.org/installer | php -- --install-dir=$COMPOSER_DIR
}

if [ ! -x "$COMPOSER_DIR/composer" ]
then
    install_composer
fi

$COMPOSER_DIR/composer self-update
cd $OPENSHIFT_REPO_DIR
$COMPOSER_DIR/composer install

还记得让这个脚本可执行: chmod +x .openshift/action_hooks/deploy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM