Merge branch '8008-test-all-packages' closes #8008
[arvados.git] / arvbox / README.md
1 # Arvados-in-a-box
2
3 Self-contained development, demonstration and testing environment for Arvados.
4
5 ## Quick start
6
7 $ bin/arvbox reboot localdemo
8
9 ## Usage
10
11 Arvados-in-a-box
12
13 arvbox (build|start|run|open|shell|ip|stop|reboot|reset|destroy|log|svrestart)
14
15 build <config>      build arvbox Docker image
16 start|run <config>  start arvbox container
17 open       open arvbox workbench in a web browser
18 shell      enter arvbox shell
19 ip         print arvbox ip address
20 stop       stop arvbox container
21 restart <config>  stop, then run again
22 reboot  <config>  stop, build arvbox Docker image, run
23 reset      delete arvbox arvados data (be careful!)
24 destroy    delete all arvbox code and data (be careful!)
25 log       <service> tail log of specified service
26 svrestart <service> restart specified service inside arvbox
27 clone <from> <to>   clone an arvbox
28
29 ## Requirements
30
31 Linux 3.x+ and Docker 1.9+
32 Minimum of 3 GiB of RAM  + additional memory to run jobs
33 Minimum of 3 GiB of disk + storage for actual data
34
35 ## Configs
36
37 ### dev
38 Development configuration.  Boots a complete Arvados environment inside the
39 container.  The "arvados", "arvado-dev" and "sso-devise-omniauth-provider" code
40 directories along data directories "postgres", "var", "passenger" and "gems"
41 are bind mounted from the host file system for easy access and persistence
42 across container rebuilds.  Services are bound to the Docker container's
43 network IP address and can only be accessed on the local host.
44
45 ### localdemo
46 Demo configuration.  Boots a complete Arvados environment inside the container.
47 Unlike the development configuration, code directories are included in the demo
48 image, and data directories are stored in a separate data volume container.
49 Services are bound to the Docker container's network IP address and can only be
50 accessed on the local host.
51
52 ### test
53 Run the test suite.
54
55 ### publicdev
56 Publicly accessible development configuration.  Similar to 'dev' except that
57 service ports are published to the host's IP address and can accessed by anyone
58 who can connect to the host system.  WARNING! The public arvbox configuration
59 is NOT SECURE and must not be placed on a public IP address or used for
60 production work.
61
62 ### publicdemo
63 Publicly accessible development configuration.  Similar to 'localdemo' except
64 that service ports are published to the host's IP address and can accessed by
65 anyone who can connect to the host system.  WARNING! The public arvbox configuration
66 is NOT SECURE and must not be placed on a public IP address or used for
67 production work.
68
69 ## Environment variables
70
71 ### ARVBOX_DOCKER
72 The location of Dockerfile.base and associated files used by "arvbox build".
73 default: result of $(readlink -f $(dirname $0)/../lib/arvbox/docker)
74
75 ### ARVBOX_CONTAINER
76 The name of the Docker container to manipulate.
77 default: arvbox
78
79 ### ARVBOX_BASE
80 The base directory to store persistent data for arvbox containers.
81 default: $HOME/.arvbox
82
83 ### ARVBOX_DATA
84 The base directory to store persistent data for the current container.
85 default: $ARVBOX_BASE/$ARVBOX_CONTAINER
86
87 ### ARVADOS_ROOT
88 The root directory of the Arvados source tree
89 default: $ARVBOX_DATA/arvados
90
91 ### ARVADOS_DEV_ROOT
92 The root directory of the Arvados-dev source tree
93 default: $ARVBOX_DATA/arvados-dev
94
95 ### SSO_ROOT
96 The root directory of the SSO source tree
97 default: $ARVBOX_DATA/sso-devise-omniauth-provider
98
99 ### ARVBOX_PUBLISH_IP
100 The IP address on which to publish services when running in public
101 configuration.  Overrides default detection of the host's IP address.
102
103 ## Notes
104
105 Services are designed to install and auto-configure on start or restart.  For
106 example, the service script for keepstore always compiles keepstore from source
107 and registers the daemon with the API server.
108
109 Services are run with process supervision, so a service which exits will be
110 restarted.  Dependencies between services are handled by repeatedly trying and
111 failing the service script until dependencies are fulfilled (by other service
112 scripts) enabling the service script to complete.