Image personnalisée
Aperçu
Cette section explique comment créer votre propre image WorkflowGen personnalisée afin de personnaliser les fichiers et les DLL de WorkflowGen.
Prérequis
Windows 10 Pro avec Docker pour Windows installé et les conteneurs Windows activés OU
Windows Server 2019 avec Docker Enterprise installé
Description
L'image WorkflowGen fournit une variante utile nommée advantys/workflowgen:7.18.3-win-ltsc2019-onbuild
qui permet de personnaliser facilement tout fichier contenu dans C:\inetpub\wwwroot
ou C: Program Files\Advantys\WorkflowGen
. Tout ce que vous avez à faire est de créer votre propre image avec un fichier Docker héritant de la variante onbuild et de placer les fichiers personnalisés dans le contexte de build de Docker.
Exemple simple
Voici un exemple simple qui remplace le fichier web.config
, personnalise la bannière et ajoute une bibliothèque personnalisée.
Les chemins .\inetpub\wwwroot
et .\Program Files\Advantys\WorkflowGen
doivent exister pour que la build réussisse. Ils ne doivent pas nécessairement contenir de fichiers, ils peuvent donc être vides.
Étape 1 : Ajoutez vos fichiers modifiés à la racine du contexte
Voici l'arborescence de fichiers du répertoire de contexte à partir duquel vous allez générer votre image WorkflowGen personnalisée :
Étape 2 : Ajoutez un Dockerfile dans le répertoire de contexte
Arborescence des fichiers :
Voici le contenu du Dockerfile :
Étape 3 : Générez votre image WorkflowGen personnalisée
Génération avec Docker Compose
Avec Docker Compose, vous pouvez spécifier les paramètres de build dans un format déclaratif afin d’intégrer le processus de génération de Docker à l’exécution. Par exemple, vous pourriez avoir le fichier Compose suivant nommé docker-compose.yml
dans votre répertoire de contexte :
(Ce fichier provient de la section Démarrer.)
La section importante est l'objet build
dans l'objet de service workflowgen
.
Ensuite, pour générer et baliser automatiquement, vous pouvez exécuter la commande suivante :
Docker Compose va alors générer et baliser votre image avec la balise présente dans la propriété image
. Si vous souhaitez mettre à jour immédiatement votre déploiement Compose sur votre ordinateur local ou exécuter immédiatement ce déploiement après la génération, exécutez la commande suivante, qui générera votre conteneur en plus de l'exécution des services après la génération :
Pour pousser l'image à l'aide de Docker Compose, exécutez la commande suivante :
Vous avez maintenant une image WorkflowGen personnalisée. Pour en savoir plus sur la mise à jour de votre conteneur lorsqu'une nouvelle version de WorkflowGen est disponible, voir la section Gestion des mises à jour.
Exemple avec une application / procédure Web WorkflowGen personnalisée patrimoniale
Supposons qu'en plus des DLLs et des bannières personnalisées, vous ayez une application Web ASP.NET 2.0 à ajouter au dossier wfapps
et à configurer dans IIS. Vous devez suivre les mêmes étapes que précédemment, mais ajouter un script Docker CMD personnalisé qui configurera l'application dans IIS.
Plusieurs scripts PowerShell sont fournis avec l'image WorkflowGen et ont des objectifs différents :
docker-entrypoint.ps1
: Le script principal à exécuter lorsque vous exécutez un conteneur. Il gère l'analyse des variables d'environnement, la configuration des méthodes d'authentification, etc...monitor-services.ps1
: Ce script gère la surveillance des processus (services IIS et Windows), ainsi que la collecte des logs du conteneur et leur redirection vers la sortie standard.healthcheck.ps1
: Ce script gère la vérification périodique qui indique si WorkflowGen fonctionne correctement ou non. Ceci est défini dans le Dockerfile WorkflowGen et est géré par le moteur Docker.*.psm1
: Différents modules PowerShell développés et disponibles dans l'image.ServiceMonitor.exe
: exécutable binaire fourni par Microsoft. Il s'agit du principal fichier exécutable utilisé par le script de surveillance pour vérifier l'état d'un service. (Pour plus d'informations sur ServiceMonitor, consultez sa page GitHub à l'adresse microsoft/IIS.ServiceMonitor.)set-state.ps1
: Définit l'état du conteneur, comme mettre le site Web hors ligne ou en ligne.
En créant votre propre image WorkflowGen dans Docker, vous pouvez remplacer n'importe quel script par le vôtre qui fait complètement autre chose, et il est recommandé de le faire si les scripts de stock ne font pas ce que vous voulez. Dans le cas de cet exemple, les scripts de stock ne se chargent pas de définir l'application Web ajoutée comme dans IIS; vous devez développer votre propre script pour cela. Voici celui que vous utiliserez dans cet exemple :
Remplacez <YOUR_WEB_SERVICE_NAME>
par le nom du service Web que vous avez ajouté dans le dossier wfapps
.
Dans ce script, notez ce qui suit :
Vous vérifiez le type de service de démarrage et vérifiez si vous avez déjà ajouté le service Web en tant qu'application Web dans IIS. Raisonnement En effet, le script de point d'entrée est réexécuté entre les redémarrages du conteneur. Par conséquent, ce script sera également réexécuté après un redémarrage. Lors du redémarrage d'un conteneur, la configuration IIS est conservée et la commande
ConvertTo-WebApplication
provoque l'échec de la procédure de démarrage lors de la tentative d'ajout d'une application Web déjà ajoutée. Par conséquent, vous devez vérifier que vous n'avez pas déjà ajouté l'application. En outre, vous vérifiez si le conteneur s'exécute en mode applications Web. Dans le cas contraire, vous n'avez pas besoin d'ajouter votre service Web dans IIS car seuls les services Windows seront exécutés.Vous vérifiez les arguments et les exécutez s'il y en a. Sinon, vous commencez à surveiller les services du conteneur.
Raisonnement
Ceci est une bonne pratique générale dans un conteneur Docker. Par exemple, si vous déboguez le conteneur et souhaitez uniquement inviter une ligne de commande PowerShell après la séquence de démarrage, vous transmettez
powershell
en tant qu'argument à la commande d'exécution, comme suit :L'argument
powershell
sera exécuté par la commandeInvoke-Expression
et une nouvelle invite de commande PowerShell s'affichera. Si aucun argument n'est transmis, le comportement par défaut consiste à commencer à surveiller les services. Comme l'image contient déjà un script pour cela, il vous suffit de l'exécuter.
Votre Dockerfile sera alors comme suit :
Après cela, vous effectuerez les mêmes étapes de génération et de poussée que dans l'exemple précédent.
Dernière mise à jour