Hosting static content in Bluemix
- Published:
- categories: ibm
- tags: ibm, bluemix
The goal is to provide a simple way to host static content, the current out of the box buildpacks, as of Feb 2015, do not include any BoilerPlates or build packs to select. However these buildpacks do exist1 so it is possible to Bring your Own BuildPack and use these.
Here is the really short version of how to do this, click here:
CloudFoundry provides a public buildpack for just this purpose github.com - static-buildpack so let’s go through a quick example of how to set this up and use it. Taking a look at the github README you see there is a very simple way to do this adhoc, if you go into a directory with your content:
cf push my-site -m 64M -b https://github.com/cloudfoundry-community/staticfile-buildpack.git
If you want to simplify the process you can add this information to a manifest.yml
file and simplify your management. I’ve created a simple git repository to start with on jazzhub, so we can clone that to start with.
sgwilbur@gura:~/workspaces/tmp$ git clone https://hub.jazz.net/git/swilbur/bluemix-static-hosting
Cloning into 'bluemix-static-hosting'...
remote: Counting objects: 12, done
remote: Finding sources: 100% (12/12)
remote: Total 12 (delta 0), reused 12 (delta 0)
Unpacking objects: 100% (12/12), done.
Checking connectivity... done.
sgwilbur@gura:~/workspaces/$ cd bluemix-static-hosting
sgwilbur@gura:~/workspaces/bluemix-static-hosting$ cf api api.ng.bluemix.net
Setting api endpoint to api.ng.bluemix.net...
OK
API endpoint: https://api.ng.bluemix.net (API version: 2.19.0)
Not logged in. Use 'cf login' to log in.
sgwilbur@gura:~/workspaces/bluemix-static-hosting$ cf login -u swilbur@us.ibm.com -o swilbur@us.ibm.com -s dev
API endpoint: https://api.ng.bluemix.net
Password>
Authenticating...
OK
Targeted org swilbur@us.ibm.com
Targeted space dev
API endpoint: https://api.ng.bluemix.net (API version: 2.19.0)
User: swilbur@us.ibm.com
Org: swilbur@us.ibm.com
Space: dev
Now that you are logged in with your organization and space set, we just need to update one more thing in our manifest.yml
file to ensure multiple people can deploy this same application against the mybluemix.net domain, then we need to ensure that each application has a unique host
attribute.
sgwilbur@gura:~/workspaces/bluemix-static-hosting$ vim manifest.yml
sgwilbur@gura:~/workspaces/bluemix-static-hosting$ git diff manifest.yml
diff --git a/manifest.yml b/manifest.yml
index 9434d8a..993f846 100644
--- a/manifest.yml
+++ b/manifest.yml
@@ -3,6 +3,6 @@
- name: bluemix-static-hosting
memory: 64M
instances: 1
- host: bluemix-static-hosting
+ host: swilbur-bluemix-static-hosting
path: www
- buildpack: https://github.com/cloudfoundry-incubator/staticfile-buildpack
\ No newline at end of file
+ buildpack: https://github.com/cloudfoundry-incubator/staticfile-buildpack
sgwilbur@gura:~/workspaces/bluemix-static-hosting$
With this change in place, we are ready to push our simple static hosted site to Bluemix.
sgwilbur@gura:~/workspaces/bluemix-static-hosting$ cf push
Using manifest file /Users/sgwilbur/workspaces/bluemix-static-hosting/manifest.yml
Updating app bluemix-static-hosting in org swilbur@us.ibm.com / space dev as swilbur@us.ibm.com...
OK
Creating route swilbur-bluemix-static-hosting.mybluemix.net...
OK
Binding swilbur-bluemix-static-hosting.mybluemix.net to bluemix-static-hosting...
OK
Uploading bluemix-static-hosting...
Uploading app files from: /Users/sgwilbur/workspaces/bluemix-static-hosting/www
Uploading 1K, 1 files
Done uploading
OK
Stopping app bluemix-static-hosting in org swilbur@us.ibm.com / space dev as swilbur@us.ibm.com...
OK
Starting app bluemix-static-hosting in org swilbur@us.ibm.com / space dev as swilbur@us.ibm.com...
-----> Downloaded app package (4.0K)
-----> Downloaded app buildpack cache (4.0K)
Cloning into '/tmp/buildpacks/staticfile-buildpack'...
grep: Staticfile: No such file or directory
-----> Using root folder
-----> Copying project files into public/
-----> Setting up nginx
grep: Staticfile: No such file or directory
-----> Uploading droplet (3.0M)
0 of 1 instances running, 1 starting
1 of 1 instances running
App started
OK
App bluemix-static-hosting was started using this command `sh boot.sh`
Showing health and status for app bluemix-static-hosting in org swilbur@us.ibm.com / space dev as swilbur@us.ibm.com...
OK
requested state: started
instances: 1/1
usage: 64M x 1 instances
urls: bluemix-static-hosting.mybluemix.net, swilbur-bluemix-static-hosting.mybluemix.net
last uploaded: Sat Feb 21 16:14:31 +0000 2015
state since cpu memory disk
#0 running 2015-02-21 10:15:16 AM 0.0% 4.6M of 64M 8M of 1G
Now you can go ahead and access your URL and you should see something similar to this.
Now that we know the static hosting is working you are free to add your desired content to the www
folder, this is the specific directory I chose for simplicity but you can customize this based on the contents of the manifest.yml
file you use.
Check the github README for what parameters can be added to customize the behavior and have fun hosting away your static and demo sites on Bluemix!
Reference:
- Host static sites on Cloud Foundry
- developerWorks - How to deploy static websites with Bluemix
- github.com - static-buildpack
- dwAnwsers - Hosting Polymer in Bluemix
- swilbur/bluemix-static-hosting