playground: more fixes and improvements

Specific changes:
- Add "no docker" mode to compilerd, for faster development
- Update debug handling to generate proper json events, and add query param to configure whether these messages should be included in the response.
- Add docker container warm-up command to GCE replica pool startup config.
- Stop caching "timed out" responses -- these made development really painful.
- Move "docker rm" out of critical path. Note, regardless of where "docker rm" happens, it will impact other requests if it blocks the docker daemon. So we might as well put it outside the critical path. More importantly, we should figure out how to make it stop blocking the docker daemon.
- Fix Dockerfile: s/identity/credentials/.

Change-Id: I9cfc81d2336eff76398b52e15e1bd59c94e814df
7 files changed
tree: ffe0b8b28cff90ff64b7750cab04fd9bd41df47b
  1. builder/
  2. compilerd/
  3. event/
  4. testdata/
  5. .gitignore
  6. monitor.py
  7. README.md
  8. test.sh
README.md

Building a Docker image and running the playground server locally

Docker setup

Install Docker:

On Goobuntu, we recommend overriding the default graph dir (/var/lib/docker) to avoid filling up the root filesystem partition, which is quite small. To do so, add the following line to your /etc/default/docker:

DOCKER_OPTS="${DOCKER_OPTS} -g /usr/local/google/docker"

Start (or restart) the Docker daemon:

$ sudo service docker restart

Build the playground Docker image (this will take a while...):

$ cp ~/.netrc $VEYRON_ROOT/veyron/go/src/veyron.io/playground/builder/netrc
$ sudo docker build -t playground $VEYRON_ROOT/veyron/go/src/veyron.io/playground/builder/.

Note: If you want to ensure an up-to-date version of veyron is installed in the Docker image, run the above command with the “--no-cache” flag.

Test your image (without running compilerd):

$ sudo docker run -i playground < /usr/local/google/home/sadovsky/dev/veyron-www/content/playgrounds/code/fortune/ex0-go/bundle.json

Running the playground server (compilerd)

Install the playground binaries:

$ veyron go install veyron.io/playground/...

Run the compiler binary as root:

$ sudo $VEYRON_ROOT/veyron/go/bin/compilerd --shutdown=false --address=localhost:8181

Or, run it without Docker (for faster iterations during development):

$ cd $(mktemp -d "/tmp/XXXXXXXX")
$ PATH=$VEYRON_ROOT/veyron/go/bin:$PATH compilerd --shutdown=false --address=localhost:8181 --use-docker=false

The server should now be running at http://localhost:8181 and responding to compile requests at http://localhost:8181/compile.

Add ?pgaddr=//localhost:8181 to any veyron-www page to make its embedded playgrounds talk to your server. Add ?debug=1 to see debug info from the builder.