So I’ve been flirting with the idea of using a Chromebook for development and relying on remote servers for the place to do all my development. This has lead me down the path of looking at many different browser based IDEs and it’s clear that Cloud9 and Eclipse Che are two of today’s winners.

Then I went to the The 12 Clouds of Christmas in Austin, TX where I was introduced to Rackspace Carina.

And then I was inspired to see if I could get either of the IDEs running on Carina.

And then I did it - here’s how I did it:

Step 0: Get a Rackspace Carina account.

Go here and with simply an email address and phone number you can get a completely free account!

Step 1: Get Carina

Here are the instructions from Rackspace.

Or, for OS X:

brew install carina

Or for linux:

mkdir $HOME/bin
curl -L https://download.getcarina.com/carina/latest/$(uname -s)/$(uname -m)/carina -o $HOME/bin/carina
chmod u+x $HOME/bin/carina

Step 2: If you don’t have a Docker CLI installed, get one.

We’ll use dvm to just get the client since that’s all we need:

curl -sL https://download.getcarina.com/dvm/latest/install.sh | sh
source $HOME/.dvm/dvm.sh
dvm install 1.9.1
ln -s $HOME/.dvm/bin/docker/1.9.1/docker $HOME/bin/docker

Step 3: Launch a Carina Cluster

First we need your API key. To get it, go to the Carina Control Panel, click your username in the top-right corner, and then click API Key.

Next export the following variables:

export CARINA_USERNAME=the_email_you_use_to_login
export CARINA_APIKEY=the_key_you_just_found

From here you should be able to list and see no clusters exist:

carina list

Now let’s create your first cluster:

carina create --wait project1

Now we can see it listed:

carina list

Now we can load the cluster’s Docker configuration:

eval $(carina env project1)

Now we can see our docker client is connected to our cluster:

docker info
Containers: 8
Images: 3
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
 b83f6276-6d58-486c-92e9-bc388833d867-n1: 172.99.73.36:42376
  └ Containers: 8
  └ Reserved CPUs: 0 / 12
  └ Reserved Memory: 0 B / 4.2 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.18.21-1-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
CPUs: 12
Total Memory: 4.2 GiB

Step 4: Launch the Cloud9 container

Run this:

docker run -P -e AUTH=user:pass -d flyinprogrammer/cloud9-with-carina

Grab the container’s public ip address via docker:

docker ps
CONTAINER ID        IMAGE                                COMMAND             CREATED             STATUS              PORTS
a76af8681dc2        flyinprogrammer/cloud9-with-carina   "/entrypoint.sh"    35 minutes ago      Up 34 minutes       172.99.73.36:32777->80/tcp, 172.99.73.36:32776->3000/tcp

Note in this case we’d access it via: http://172.99.73.36:32777 and the username/password combination we set was user for a username and pass for a password.

Step 5: Setup Carina in our Cloud9 container

Because I’ve already installed carina and a docker client in the container, all we need to do is the following:

export CARINA_USERNAME=the_email_you_use_to_login
export CARINA_APIKEY=the_key_you_just_found
eval $(carina env project1)

And now we can build and run docker containers within our remote Cloud9 IDE!

proof

Note when we launched the container we also expose port 3000. This provides us an inbound port we can bind the software we write in the IDE too when we start it up.

Additionally, if your software is built and runs in docker, we can simply deploy it to yet another Carina cluster which we can launch from within the IDE.

I tried getting this to work with Eclipse Che, but I couldn’t get it to work. It’d be cool if it did work though since Che is super duper Docker based.

Hope you find this as fun and cool as I do!