Deploying Arvados in Docker Containers
======================================

This file explains how to build and deploy Arvados servers in Docker
containers, so that they can be run easily in different environments
(a dedicated server, a developer's laptop, a virtual machine,
etc).

This is a work in progress; instructions will almost certainly be
incomplete and possibly out of date.

Prerequisites
-------------

* Docker

  Docker is a Linux container management system based on LXC. It is a
  very young system but is being developed rapidly.
  [Installation packages](http://www.docker.io/gettingstarted/#h_installation)
  are available for several platforms.

* Ruby (any version)

* sudo privileges to run `debootstrap`

Building
--------

1. Copy `config.yml.example` to `config.yml` and edit it with settings
   for your installation.
2. Run `make` to build the following Docker images:

   * arvados/api       - the Arvados API server
   * arvados/doc       - Arvados documentation
   * arvados/warehouse - Keep, the Arvados content-addressable filesystem
   * arvados/workbench - the Arvados console
   * arvados/sso       - the Arvados single-signon authentication server

   You may also build Docker images for individual Arvados services:

        $ make api-image
        $ make doc-image
        $ make warehouse-image
        $ make workbench-image
        $ make sso-image

Deploying
---------

1. Make sure the `ARVADOS_DNS_SERVER` has been provisioned with the
   following DNS entries, resolving to the appropriate IP addresses
   where each service will be deployed.

   * $API_HOSTNAME
   * keep0.$API_HOSTNAME
   * compute0.$API_HOSTNAME
   * controller.$API_HOSTNAME
   * workbench.$API_HOSTNAME

2. The `run.sh` script in this directory will start all Arvados
   servers on your machine.