Pour tester notre connecteur Alfresco-OpenIO j’utilise la magie de Docker. OpenIO fournit une image Docker près à l’emploie. Pour Alfresco on trouve plusieurs images basées sur l’installateur automatique d’Alfresco, ce qui ne me convient pas. J’ai donc créé mes propres images.

Au lieu d’une image contenant Alfresco+Share+Solr+Postgresql, j’ai mis en place 4 images distinctes. C’est ainsi plus simple de remplacer un composant (par exemple Postgresql par MySQL), on peut également redémarrer ou reconstuire uniquement un service ce qui est beaucoup plus rapide.

Les images Alfresco, Share et Solr sont simplement basés sur l’image tomcat officiel “tomcat:7.0.70-jre7” sur lesquelles j’injecte les war officiels d’Alfresco et la configuration spécifique au montage Docker.

Bien sur j’injecte alfresco-mmt.jar pour facilement installer des modules Alfresco AMP sur des images filles. C’est ainsi que je créé une image Alfresco contenant le module Alfresco-OpenIO.

Ensuite il suffit de créer un fichier docker-compose.yml pour configurer les services ensembles. Par exemple :

version: '2'

networks:
  alf-openio:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.168.0/24
          gateway: 192.168.168.1

services:
  alfresco:
    image: jeci/alfresco-openio
    environment:
      CATALINA_OPTS: "-Xms512m -Xmx4G -XX:MaxPermSize=256m -XX:-DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Djava.security.egd=file:/dev/./urandom "
    depends_on:
      - postgresql
      - openio
    ulimits:
      nproc: 65535
      nofile:
        soft: 20000
        hard: 40000
    links:
      - openio
    networks:
      - alf-openio

  share:
    image: jeci/share-dc
    environment:
      CATALINA_OPTS: "-Xms1G -Xmx4G -XX:MaxPermSize=256m -XX:-DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Djava.security.egd=file:/dev/./urandom "
    depends_on:
    - alfresco
    ports:
    - "80:8080"
    networks:
      - alf-openio
    cap_drop:
     - NET_BIND_SERVICE

  solr:
    image: jeci/solr-dc
    environment:
      CATALINA_OPTS: "-Xms512m -Xmx2G -XX:MaxPermSize=512m -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:G1HeapRegionSize=8m -XX:MaxGCPauseMillis=200  -Djava.security.egd=file:/dev/./urandom "
    depends_on:
    - alfresco
    ulimits:
      nproc: 65535
      nofile:
        soft: 20000
        hard: 40000
    networks:
      - alf-openio

  postgresql:
    image: postgres:9.4
    environment:
      POSTGRES_DB: alfresco
      POSTGRES_PASSWORD: alfresco
      POSTGRES_USER: alfresco
    networks:
      - alf-openio

  openio:
    image: openio/sds
    container_name: openio-service
    environment:
      OIO_NS: OPENIO
      OIO_ACCOUNT: alfresco
      OPENIO_IPADDR: 192.168.168.10
    networks:
     alf-openio:
        ipv4_address: 192.168.168.10
    expose:
     - "6006"
    stdin_open: true
    tty: true

Démarrer l’image OpenIO avec docker-compose n’est pas facile car OpenIO nécessite d’avoir une adresse ip fixe. Mais une fois correctement en place il suffit de faire :

docker-compose up -d