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.
- Documentation officielle d'installation : https://docs.docker.com/engine/install/
- Version minimale recommandée : 27.x
Docker Compose
Outil permettant de définir et gérer des applications multi-conteneurs.
- Documentation officielle : https://docs.docker.com/compose/install/linux/
- Version minimale recommandée : 2.x
ElasticSearch
Moteur de recherche requis pour les fonctionnalités de recherche documentaire.
- Documentation officielle : https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
- Version recommandée : 8.x
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
- 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
- Lancez l'application :
- Vérifiez le statut des services :
Validation du déploiement
- Accédez à l'interface web :
http://172.17.0.1:8080 - Vérifiez l'accès à l'API :
http://172.17.0.1:3000