Aller au contenu

Guide de déploiement

Introduction

MDF (Maarch Digital Flow) est une solution de dématérialisation qui se compose de 3 composants dockerisés :

  • Base de données PostgreSQL pour le stockage des données
  • API MDF pour la logique métier
  • Interface utilisateur (Frontend) pour l'interaction avec l'API

Ce guide est destiné aux intégrateurs effectuant un déploiement on-premise, avec une connaissance de base de Docker et des commandes Linux.


Cette version de Maarch Digital Flow n'étant pas encore publique, merci de bien vouloir contacter l'éditeur pour bénéficier des toutes dernières images du logiciel


Pré-requis

Docker

Docker est nécessaire pour exécuter les conteneurs de l'application.

Docker Compose

Outil permettant de définir et gérer des applications multi-conteneurs.

ElasticSearch

Moteur de recherche requis pour les fonctionnalités de recherche documentaire.

Initialiser l'environnement

Créer un fichier compose.yml et copier le contenu ci-dessous :

# compose.yml

services:
  # Si vous avez déjà un serveur PostgreSQL, vous pouvez supprimer le service ci-dessous
  mdf-database:
    image: postgres:16-alpine
    # Le service sera redémarré automatiquement en cas d'erreur, sauf si il est manuellement arrêté
    restart: unless-stopped
    networks:
      # Ajoute le service au réseau docker mdf-network. Le service sera accessible via le nom "mdf-database"
      - mdf-network
    environment:
      POSTGRES_DB: mdf
      POSTGRES_USER: maarch
      POSTGRES_PASSWORD: maarch
    healthcheck:
      test: [ "CMD", "pg_isready", "-d", "mdf", "-U", "maarch" ]
      interval: 10s
      timeout: 5s
      retries: 5

  mdf-api:
    # Nom de l'image docker API. À remplacer par l'image que vous souhaitez utiliser
    image: local/mdf-api:latest
    depends_on:
      # Permet de démarrer le service mdf-api après démarrage du service mdf-database.
      # À supprimer si vous n'utilisez pas le service mdf-database 
      - mdf-database
      # Le service sera redémarré automatiquement en cas d'erreur, sauf si il est manuellement arrêté
    restart: unless-stopped
    networks:
      # Ajoute le service au réseau docker mdf-network. Le service sera accessible via le nom "mdf-api"
      - mdf-network
    environment:
      # Environnement de l'application, peut être 'dev' ou 'prod'. Pour des raisons de sécurités et performances, il est recommandé de laisser 'prod'
      APP_ENV: 'prod'
      # Clé secréte à modifier. Il est recommandé de mettre une chaine de caractère aléatoire
      APP_SECRET: secret
      # URI de connexion à la base de données. Doit être dans le format "postgresql://<user>:<password>@<host>:<port>/<nom db>?serverVersion=13&charset=utf8"
      DATABASE_URL: "postgresql://maarch:maarch@mdf-database:5432/mdf?serverVersion=13&charset=utf8"
      # URI de connexion au serveur de mail smtp. Doit être au format "smtp://<user>:<password encodé en base64>@<host>:<port>"
      MAILER_DSN: null://null
      # Adresse email utilisé comme adresse d'envoi
      MAILER_SENDER: mdf@maarch.org
      # Url de l'api accessible par le client front. Exemple : https://api.mdf.maarch.com 
      URL_HOST: http://172.17.0.1:3000
      # Nom de l'utilisateur elastic search
      ELASTIC_USER: "elastic"
      # Mot de passe de l'utilisateur elastic search
      ELASTIC_PASSWORD: "elastic_password"
      # URL du serveur elastic
      ELASTIC_ENDPOINT: "https://localhost:9200"
      # Prefix du nom des index Elastic. MDF a besoin de 2 index : "<prefix>entry" et "<prefix>binary_content"
      # Changer le prefix permet d'utiliser le même serveur elastic pour des instances de MDF différentes
      ELASTIC_CONFIG_PREFIX: ''
      # Active la fonctionnalité de tri des résultats de recherche (version >=2.1) 
      ELASTIC_ENABLE_SORT: true
    ports:
      # Redirige le port 3000 de l'hôte vers le port 80 du conteneur. Vous pouvez remplacer 3000 par un autre port.
      - "3000:80"
    volumes:
      # Montage du dossier contenant les documents 
      - {PATH_ON_YOUR_SERVER}:/opt/maarch-digital-flow

  mdf-front:
    # Nom de l'image docker front. À remplacer par l'image que vous souhaitez utiliser
    image: local/mdf-front:latest
    # Le service sera redémarré automatiquement en cas d'erreur, sauf si il est manuellement arrêté
    restart: unless-stopped
    networks:
      # Ajoute le service au réseau docker mdf-network. Le service sera accessible via le nom "mdf-front"
      - mdf-network
    ports:
      # Redirige le port 8080 de l'hôte vers le port 80 du conteneur. Vous pouvez remplacer 8080 par un autre port.
      - "8080:80"
    environment:
      # Url de l'api accessible par le client front, à remplacer. Exemple : https://api.mdf.maarch.com
      API_URL: http://172.17.0.1:3000
      # Url api accessible uniquement par les plugins front (optionnel). Exemple : https://shadow-api.mdf.maarch.com (1)
      SHADOW_API_URL: ''
      # Url de l'application front, à remplacer. Exemple : https://mdf.maarch.com
      FRONT_URL: http://172.17.0.1:8080
      # Url du service plugin front. Ce plugin est sous license privé, contactez Maarch pour plus d'information
      PLUGIN_URL: ''
      # Liste des plugins à activer
      PLUGIN_NAMES: ''
      # Url du service d'édition de documents OnlyOffice. /!\ Nécessite le plugin front
      ONLYOFFICE_URL: ''
      # Url du service de visionneuse de document d'Apryse. /!\ Nécessite le plugin front
      PDFTRON_SERVER_URL: ''

  mdf-front-plugins:
    # Nom de l'image docker plugin front. Contactez Maarch pour obtenir un accès à l'image 
    image: local/mdf-front-plugins:latest
    environment:
      # URL utilisé dans la restriction CORS
      # Mettre l'URL du service front (FRONT_URL)
      ALLOWED_ORIGIN: "http://172.17.0.1:8080"
    networks:
      - mdf-network
    ports:
      # Redirige le port 9090 de l'hôte vers le port 80 du conteneur. Vous pouvez remplacer 9090 par un autre port.
      - "9090:80"

# Réseau interne docker aux services MDF
networks:
  mdf-network:
    driver: bridge
  1. Ce paramètre permet de spécifer une url dédiée aux communications effectuées entre systèmes, par exemple entre un plugin et l'API, lorsque l’infrastructure impose une séparation de ces flux.

Déploiement

Se placer dans le dossier contenant le fichier compose.yml

  1. Lancez l'application :
docker compose up -d
  1. Vérifiez le statut des services :
docker compose ps

Validation du déploiement

  1. Accédez à l'interface web : http://172.17.0.1:8080
  2. Vérifiez l'accès à l'API : http://172.17.0.1:3000