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.
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:15-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: labs.maarch.org:5050/maarch/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=15&charset=utf8"
DATABASE_URL: "postgresql://maarch:maarch@mdf-database:5432/mdf?serverVersion=15&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
# Jeu de données minimal
FIXTURE_SOURCE: "mini"
# 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
# Allow front url
ALLOWED_ORIGIN: "http://172.17.0.1:8080"
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: labs.maarch.org:5050/maarch/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 de l'application front, à remplacer. Exemple : https://mdf.maarch.com
FRONT_URL: http://172.17.0.1:8080
# Réseau interne docker aux services MDF
networks:
mdf-network:
driver: bridge
VERSION PRO (Nécessite une license privé, contactez Maarch pour plus d'informations) :
# compose.yml
services:
# Si vous avez déjà un serveur PostgreSQL, vous pouvez supprimer le service ci-dessous
mdf-database:
image: postgres:15-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/digital-flow-api-full: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
# Jeu de données minimal
FIXTURE_SOURCE: "mini"
# URI de connexion à la base de données. Doit être dans le format "postgresql://<user>:<password>@<host>:<port>/<nom db>?serverVersion=15&charset=utf8"
DATABASE_URL: "postgresql://maarch:maarch@mdf-database:5432/mdf?serverVersion=15&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
# Allow front url
ALLOWED_ORIGIN: "http://172.17.0.1:8080"
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/digital-flow-front-full: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/digital-flow-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
Déploiement
Se placer dans le dossier contenant le fichier
compose.yml
- Lancez l'application :
- Vérifiez le statut des services :
- Initialiser la base de données
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