DreamFactory Deployments with CloudFoundry
This Wiki tutorial applies to both Pivotal and IBM Bluemix.
Dreamfactory can be deployed as a CloudFoundry manifest and launched in both the Pivotal and IBM BlueMix Platforms. This requires a bit of restructuring of the source code but can be easily done.
To set things up, the DreamFactory source needs to be pulled down and composer run first, so the necessary vendor packages can be brought in. Next, the newly updated source files (inflated by Composer) needs to be placed in a separate directory under the manifest file. This essentially becomes our “App” package for CloudFoundry.
Here’s a step-by-step guide on the basics of setting things up. This demo will use the open source version of the product with the default Sqlite database but should be a good place to get started for further development.
Install DreamFactory (Temporarily)
First, let’s create a temporary directory to stage our work.
mkdir cf-dftemp
Next, pull down the dream factory source into a directory called “htdocs”.
git clone https://github.com/dreamfactorysoftware/dreamfactory.git ./htdocs
Next, install DreamFactory and its dependencies with Composer in the new directory.
cd htdocs
composer install —no-dev
Let composer install the dependencies and then we’ll next need to move some files around.
Moving Files Around
Some of the config files for CloudFoundry are carried along with the DreamFactory source. You will need to move these files up a level above the ./htdocs
directory.
These directories and files are as follows:
You must move all these files up a level, however, keep a copy of composer.lock within the original directory, so just copy that one to the higher directory.
When you’re finished, your basic structure should look like this:
Now that we’re finished moving things around, you’ll need to finalize some config settings before doing a cf push.
Further Config
Open up the manifest.yml file. Replace the [app_name] placeholder with something unique to your development space.
Here is where you can also pass env variables into the container. Notice APP_DEBUG is set to false, but you could change that to true. Laravel will pick up the environment variables you specify here.
The .bp-config (PHP BuildPack config) directory is where you will specify any overrides or additional PHP modules which get installed. We’ve set up the minimum required modules and overrides for DreamFactory to run with the default Apache install, but you can modify these files to align with your own setup. For more information on overriding the BuildPack, navigate over to the build pack documentation on CloudFoundry: http://docs.cloudfoundry.org/buildpacks/php/index.html.