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

吃可爱长大的小学妹 提交于 2019-12-04 11:06:07

Basically, you need to execute composer install with each build automatically on OpenShift.

You might do this by adding a marker file named use_composer in the folder .openshift/markers.

.openshift/markers/use_composer

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


If you need to do more than just composer install, like installing Composer, using action_hooks is the better choice. They allow to work with bash scripts.

See, 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 )

The best way to install dependencies is from an action hook, i.e. a script run by the cartridge during the deployment. I would use the deploy hook:

#!/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

Also remember to make this script executable: chmod +x .openshift/action_hooks/deploy.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!