Docker

Docker is a great way of deploying applications for processing data, running webservices, etc., all nicely containerized. Java applications can be packaged with Docker as well and ADAMS is no exception.

Pre-built images

Once a week, our build server pushes out the current snapshots to the public Docker Hub registry, so you do not have to do this. These images are built on top of an Ubuntu Linux distribution, with ADAMS installed from the Debian packages that also get generated by our build server.

These pre-built docker images are avilable from the following location:

hub.docker.com/u/theadamsflow/

For running the latest adams-ml-app, you first have to pull the image:

docker pull theadamsflow/adams-ml-app:latest

If not already done in the current session, you need to expose your xhost in order to allow the Docker container to display the ADAMS user interface using your local X-Server:

xhost +local:root

Spin up a container from this image with this command:

docker run -it --env="DISPLAY" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" theadamsflow/adams-ml-app:latest

Now you can start up the user interface from the console using:

adams-ml-app-gui

Once you have closed ADAMS, you can exit the container with the exit (or just use Ctrl+D) command.

NB: These instructions assume that you have docker installed on your Linux machine. See the MOA blog post for details on getting the X-Server working on Windows and Mac OSX.

Custom images

However, these pre-built base images may not suit your needs, as they may be too large or lacking functionality that you need. If you want to containerize a single worker flow, then you can have a look at the adamsflow2docker library:

github.com/waikato-datamining/adamsflow2docker

This project generates a Dockerfile from a list of ADAMS modules (and version) that the application should be comprised of and executes the specified flow inside the image using the adams.flow.FlowRunner class.