Arvbox » History » Version 11
Peter Amstutz, 03/03/2016 05:14 PM
1 | 1 | Peter Amstutz | h1. Arvbox |
---|---|---|---|
2 | |||
3 | 3 | Peter Amstutz | We recommend using "Arvbox":http://doc.arvados.org/install/arvbox.html to set up self-contained Arvados development environment. |
4 | 1 | Peter Amstutz | |
5 | 3 | Peter Amstutz | h2. Running Arvados in development mode |
6 | |||
7 | <pre> |
||
8 | $ arvbox reboot dev |
||
9 | </pre> |
||
10 | |||
11 | This performs the following operations: |
||
12 | |||
13 | # Rebuild the arvbox-dev docker image (typically the layers are cached so this is a no-op unless you are working on arvbox itself) |
||
14 | # Create @~/.arvbox/arvbox@ to store arvbox state |
||
15 | # Clone the arvados git repository to @~/.arvbox/arvbox/arvados@ |
||
16 | # Place stateful container data in @~/.arvbox/arvbox/postgres@ and @~/.arvbox/arvbox/var@ |
||
17 | # Start the container |
||
18 | |||
19 | The container will then: |
||
20 | # Download and cache various packages (Ruby gems, Passenger) |
||
21 | 5 | Peter Amstutz | # Compile and install Arvados server binaries |
22 | # Build and install Arvados SDK packages (such as arvados-python-client) |
||
23 | 3 | Peter Amstutz | # Start the Arvados services |
24 | |||
25 | The directories inside @~/.arvbox/arvbox@ are all bind-mounted inside the container. This means that you may edit files on the host file system and the changes will be seen inside the container immediately. For example, if you edit a page template in @~/.arvbox/arvbox/arvados/apps/workbench/app/views@ you only need to reload the page in your browser to see the change. |
||
26 | |||
27 | 6 | Peter Amstutz | You can restart individual services without restarting the whole container. For compiled services, the startup script always recompiles the server before starting it. For example, if you are working on @keepproxy@ |
28 | 3 | Peter Amstutz | |
29 | <pre> |
||
30 | $ arvbox sv restart keepproxy |
||
31 | </pre> |
||
32 | |||
33 | If any service fails to come up, you can see the debug log using @arvbox log@. This log will include compilation or install errors: |
||
34 | |||
35 | <pre> |
||
36 | $ arvbox log keepproxy |
||
37 | </pre> |
||
38 | |||
39 | Finally, you can get a root shell inside the container using @arvbox sh@ |
||
40 | |||
41 | <pre> |
||
42 | $ arvbox sh |
||
43 | </pre> |
||
44 | |||
45 | 11 | Peter Amstutz | h2. Making Arvbox accessible from other hosts |
46 | |||
47 | By default, Arvbox can only be accessed on the same host it is running. To publish Arvbox service ports to the host's service ports and advertise the host's IP address for services, use @publicdev@ or @publicdemo@: |
||
48 | |||
49 | <pre> |
||
50 | $ arvbox reboot publicdev |
||
51 | </pre> |
||
52 | |||
53 | This attempts to auto-detect the correct IP address to use by taking the IP address of the default route device. If the auto-detection is wrong, you want to publish a hostname instead of a raw address, or you need to publish a different public-facing device (such as a router or firewall), set @ARVBOX_PUBLISH_IP@ to the desire hostname or IP address. |
||
54 | |||
55 | <pre> |
||
56 | $ export ARVBOX_PUBLISH_IP=example.com |
||
57 | $ arvbox reboot publicdev |
||
58 | </pre> |
||
59 | |||
60 | Note: this expects to bind the host's port 80 (http) for workbench, so you cannot have a conflicting web server already running on the host. It does not attempt to take bind the host's port 22 (ssh), as a result the arvbox ssh port is not published. |
||
61 | |||
62 | 9 | Peter Amstutz | h2. Running multiple Arvbox containers |
63 | |||
64 | To run multiple Arvbox containers, give them different names by setting the environment variable @ARVBOX_CONTAINER@. |
||
65 | |||
66 | <pre> |
||
67 | $ arvbox status |
||
68 | Selected: arvbox |
||
69 | Status: running |
||
70 | IP: 172.17.0.2 |
||
71 | Data: /home/peter/.arvbox/arvbox |
||
72 | |||
73 | $ export ARVBOX_CONTAINER=arvbox2 |
||
74 | $ arvbox status |
||
75 | Selected: arvbox2 |
||
76 | Status: not running |
||
77 | Data: /home/peter/.arvbox/arvbox2 |
||
78 | </pre> |
||
79 | |||
80 | 3 | Peter Amstutz | h2. Running the test suite |
81 | 1 | Peter Amstutz | |
82 | 9 | Peter Amstutz | Arvbox can also be used to run the Arvados test suite in an isolated environment. |
83 | 3 | Peter Amstutz | |
84 | <pre> |
||
85 | $ arvbox restart test |
||
86 | </pre> |
||
87 | 7 | Peter Amstutz | |
88 | 8 | Peter Amstutz | You can pass parameters to the test suite as described in [[Running tests#Save-time-by-skipping-install]]: |
89 | 7 | Peter Amstutz | |
90 | <pre> |
||
91 | $ arvbox restart test --only services/keepproxy |
||
92 | </pre> |