1. Deploying Armadillo for local use

Armadillo + RServer with Docker Compose

Welcome

  • Run Armadillo, RServer, locally with Docker Compose

Services and Roles

What we Deploy:

  • Armadillo → http://localhost:8000
    • Main DataSHIELD server and admin UI. (With admin/admin as user)
  • RServer → http://localhost:6311
    • DataSHIELD packages;

Goal

Deploy Armadillo locally on your laptop using Docker Compose.

References :


Files layout

local-deploy-armadillo
├── config 
    ├── application.yml ( Main armadillo configuration ) 
├── data                ( Local storage ) 
├── docker-compose.yml 
└── logs                ( Armadillo logfiles ) 

1) Armadillo configuration

Define password and profiles in this file. If you are running armadillo under systemd you can enable docker-management-enabled to true.

armadillo:
  docker-management-enabled: false
  docker-run-in-container: true
  profiles:
    - name: default
      image: datashield/rock-base:latest
      port: 8085 
      host: rserver 
      package-whitelist:
        - dsBase
      function-blacklist: [ ]
      options:
        datashield:
          seed: 342325352

# required settings:
spring:
  security:
    user:
      # please change this admin password!
      password: admin!!!

  # optional settings (review spring handbook to find more):
  servlet:
    multipart:
      ## change this if your files are bigger
      max-file-size: 1000MB
      max-request-size: 1000MB

storage:
  ## to change location of the data storage
  root-dir: /data

# Match with Dockerfile volume /logs
audit.log.path: '/logs/audit.log'
stdout.log.path: '/logs/armadillo.log'

logging:
  level:
    root: INFO
    ## change to DEBUG to have more details, typically when developing
    org.molgenis: DEBUG
    ## Don't log upload data
    org.apache.coyote.http11.Http11InputBuffer: INFO

2) docker-compose.yml

Defines the armadillo docker config.

services:
 armadillo:
   image: molgenis/molgenis-armadillo:latest
   platform: linux/amd64
   environment:
     LOGGING_CONFIG: 'classpath:logback-file.xml'
     SPRING_SECURITY_USER_PASSWORD: 'admin'
     SPRING_RSERVER_URL: 'http://rserver:8085'
     DEBUG: "TRUE"
   ports:
     - "8000:8080"
   volumes:
     - ./logs:/app/logs
     - ./data:/data
     - /var/run/docker.sock:/var/run/docker.sock
     - ./config:/config
   networks:
     - armadillo-workshop

 rserver:
   image: datashield/rock-base:latest
   platform: linux/amd64
   environment:
     DEBUG: "TRUE"
   networks:
     - armadillo-workshop

networks:
  armadillo-workshop:
    driver: bridge

3) Bring up the stack

From the directory containing ‘docker-compose’


docker compose up -d
#firs start may take a minute while images are pulled.

#check health

docker compose logs -f armadillo

4) Check Armadillo UI

  • Open http://localhost:8000 in your browser.
  • Login with user admin and the password in the configuration.

5) Rstudio Check R connectivity

library(dsBaseClient)
library(DSI)
library(DSMolgenisArmadillo)



url <- "http://localhost:8000"
builder <- DSI::newDSLoginBuilder()

builder$append(
  server = "armadillo",
  url = url,
  #token = token,
  user = "admin",
  password = "admin",
  driver = "ArmadilloDriver",
  profile = "default")

logindata <- builder$build()
conns <- DSI::datashield.login(logins = logindata)


ds.ls()

Troubleshooting

  • Reset the stack
docker compose down -v
docker compose up --build

Kubernetes / Production

  • Full Docker stack, and systemd setup available at: https://molgenis.github.io/molgenis-service-armadillo
  • Helm charts available:
    https://github.com/molgenis/molgenis-service-armadillo/tree/master/helm-chart
  • DataSHIELD kubernetes profiles maintained in Helm (private repo for some charts)
  • If you need help or want to contribute contact:
    • Email: support@molgenis.org
    • Slack: join the #Armadillo-support channel (DataSHIELD Slack)

Live Playground

  • Molgenis is providing an Armadillo playground. With an central analysis server playground (Jupyterhub). Contact support@molgenis.org with your e-mail adres for (institute) access.

Notes

  • This quickstart is intended for local development and testing
  • For production deployments prefer systemd or Kubernetes/Helm configurations