我该如何在OpenShift上更新Composer?

3
我正在尝试在免费节点上使用SlimOpenShift。我可以在SSH会话中运行composer update,没有任何问题。

唯一的问题是每次我想通过git提交文件时,都必须转到控制台并再次运行composer install。我的问题是有没有简单的方法可以解决这个问题?我在/project/.openshift/action_hooks/post_deploy中尝试了一个BASH脚本,但服务器未在runtime/repo下创建vendor文件夹。

但是服务器不断变化,现在这是不可能的。我无法理解原因。在我的部署中,我有一个post_deploy(+x)脚本,位于.openshift/action_hooks文件夹中,其中包含cd $OPENSHIFT_REPO_DIR && composer install - Nitin...
2个回答

4

我总是通过操作钩子来完成它:

在我的项目目录中,我有一个脚本被/project/.openshift/action_hooks/post_deploy调用,其中post_deploy是一个bash脚本。 以下是我一直在使用的内容:

#!/bin/bash

export MY_PHPCOMPOSER=$OPENSHIFT_DATA_DIR/composer.phar

# if composer not exists, download
if [ ! -f $MY_PHPCOMPOSER ]; then
    cd $OPENSHIFT_DATA_DIR
    echo "Downloading composer..."
    php -r "readfile('https://getcomposer.org/installer');" | php 
fi

$MY_PHPCOMPOSER -n -q self-update
cd $OPENSHIFT_REPO_DIR 
# install
php -dmemory_limit=1G $MY_PHPCOMPOSER install

post_deploy脚本会在每次将存储库推送到OpenShift时执行。它非常好用!

附注

由于OpenShift组合器的版本并不总是更新的,因此下载新的组合器副本并使用它是安全的。 同时,不要忘记调整权限设置。

有用的链接


我之前添加了一个脚本,问题是厂商未被创建在/app-root/runtime/repo文件夹中。 - cardeol
我不想每次提交文件时都运行“composer install”。 - cardeol
你肯定做错了什么。而且你不想运行 "composer install",但每次推送你的代码库时都必须这样做。这是 openshift 的工作方式,你无法改变它! - felipsmartins
composer install 应该包含在 .openshift/action_hooks/post_deploy 中,但仍未创建 vendor 文件夹。 - cardeol
发现错误了,我只是在本地的post_deploy上使用了+x而不是git update-index --chmod=+x。谢谢你的帮助。 - cardeol
遇到了与@cardeol相同的问题。通过权限修复了它。 - frostymarvelous

0

我知道我的回答有些晚,但根据 Openshift 文档,你可以通过创建一个标记文件来在每次构建后启用 composer install

touch .openshift/markers/use_composer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接