如何 运行(或者我应该 运行)Openshift 上的 Composer?
How to run (or should I run) Composer on Openshift?
我正在尝试在 Openshift 上创建 ZendFramework 的骨架应用程序。我已经使用这些 instructions 创建了一个 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
这表明我需要 运行 Composer on Openshift。我该如何实现?
在我的本地存储库中,/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
。
我正在尝试在 Openshift 上创建 ZendFramework 的骨架应用程序。我已经使用这些 instructions 创建了一个 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
这表明我需要 运行 Composer on Openshift。我该如何实现?
在我的本地存储库中,/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
。