Docker
Prerequisites
Docker version 18.03.1-ce or greater, it might work with older versions as well.
Checkout of MARV Robotics Enterprise Edition or Community Edition
Building or configure image used
Users of the Enterprise Edition build their own image based on their custom release of MARV Robotics EE. Users of the Community Edition can use the published MARV Robotics CE Image ternaris/marv-robotics
or build their own.
Enterprise Edition and custom image
Building your own image is as simple as running ./scripts/build-image
.
$ ./scripts/build-image
...
Successfully tagged marvee-marvhub:latest
The basename of your checkout of MARV Robotics will be used as image name and subsequently also as container name. That way it is possible to have multiple containers based on different images running side-by-side.
Community Edition: Official MARV Robotics CE Image
In order to use the official MARV Robotics Community Edition image instead, the scripts contained in the repository have to be instructed accordingly.
$ cd marv-robotics
$ echo ternaris/marv-robotics > .image-name
Start container
Run container provides instructions for the basic use case.
$ ./scripts/run-container
Usage: run-container SITE SCANROOT [EXTRA_OPTS ...]
The site is expected to contain marv.conf and gunicorn_cfg.py.
It is mounted inside the container at /home/marv/site.
The scanroot contains the log files for one or more collections.
It is mounted read-only into the container at /scanroot.
All additional arguments are passed as options to docker run.
Without further arguments it will run the container in the foreground, which is good for development where you want to kill and recreate it occasionally.
$ ./scripts/run-container sites/example path/to/scanroot
Use --detach
to start the container in the background.
$ ./scripts/run-container sites/example path/to/scanroot --detach
Either way, you can enter the running container.
$ ./scripts/enter-container
marv@ce:~$ marv --help
The scanroot is mounted read-only as /scanroot
inside the container. Be aware of that when creating your own configuration.
Adding your own code
To add your own code, create a python package in ./code
next to the marv packages. When building an image, all of the code is copied into the image and installed automatically. Especially during development, you don’t want to rebuild all the time.
MARV_INIT=1 DEVELOP=1 ./scripts/run-container sites/example path/to/scanroot
In general changes you make to your code will be effective immediately. However, after adding the package, when making changes to its setup.py
, and when making changes affecting the web serving part of marv, the container needs to be restarted. As a rule of thumb: when you make changes to the config file, you want to restart using MARV_INIT=1
, while making changes to your node code does not need a restart.
Serve documentation
While the container is running MARV Robotics should be available at: http://localhost:8000.
And it’s documentation is linked in the footer and served at: http://localhost:8000/docs/
Let’s switch to your locally served documentation.
Summary
Using tooling from the MARV Robotics repository you created your own docker image or used the official CE image and started a docker container running marv.
Now you are ready to setup a basic site.