Docker
Déployez FoxIDs dans Docker Desktop sur une machine de dev ou de test.
Ceci est une description de la manière d’effectuer un déploiement par défaut et de se connecter pour la première fois.
Une installation FoxIDs est comme un bucket, il n’y a pas de dépendances externes et il est facile d’atteindre un très haut niveau de disponibilité avec peu d’efforts. FoxIDs est mis à jour en mettant à jour les deux images docker foxids/foxids et foxids/foxids-control vers une nouvelle version. Les nouvelles versions de FoxIDs sont rétrocompatibles ; veuillez consulter les notes de version avant de mettre à jour.
Prérequis :
- Vous avez Docker Desktop installé.
- Vous avez des connaissances de base sur Docker.
Voici une liste de commandes utiles à la fin de cette description.
Ce déploiement comprend :
- Deux sites web, un pour FoxIDs et un pour FoxIDs Control (Client et API) dans deux images docker foxids/foxids et foxids/foxids-control ou générées à partir du code avec des fichiers
Dockerfile. - Les deux sites web sont exposés sur deux ports différents.
- MongoDB est une base de données NoSQL et contient toutes les données, y compris tenants, environnements et utilisateurs. Déployée avec l’image Docker officielle MongoDB.
- Le cache Redis contient les séquences (ex. login et logout), un cache de données pour améliorer les performances et gère les compteurs pour sécuriser l’authentification contre diverses attaques. Déployé avec l’image Docker officielle Redis.
- Les logs sont écrits sur
stdoutoù ils peuvent être récupérés par Docker.
Optionnellement utilisez PostgreSql à la place de MongoDB et, optionnellement, désactivez Redis et enregistrez les données de cache dans la base de données (MongoDB ou PostgreSql). Sans cache Redis, vous devez sélectionner
Nonecomme data cache.
Déploiement
Le déploiement est effectué dans l’ordre décrit.
Préparer
Clonez le dépôt git ou téléchargez en ZIP. Les fichiers de configuration Docker yaml se trouvent dans le dossier ./Docker.
Ouvrez une console et naviguez vers le dossier ./Docker.
Volume
Vous avez besoin d’un volume pour MongoDB avec le nom foxids-data où les données sont enregistrées.
Soit créez un volume pour MongoDB sur votre système de fichiers hôte Windows, par ex. le dossier C:\data\foxids-data. Important : créez les dossiers avant d’exécuter la commande.
docker volume create --driver local --opt type=none --opt device=C:\data\foxids-data --opt o=bind foxids-data
OU créez un volume pour MongoDB géré par Docker.
docker volume create foxids-data
Déployer les conteneurs
Les deux sites FoxIDs sont configurés soit avec des images depuis Docker Hub, soit avec des images générées depuis le code via des fichiers Dockerfile. Et éventuellement configurés pour utiliser uniquement HTTP ou HTTP/HTTPS avec un certificat de développement.
Les images officielles MongoDB et Redis sont tirées depuis Docker Hub.
Fournisseur d’e-mail
Vous pouvez configurer un fournisseur d’e-mail global ou plus tard configurer des fournisseurs d’e-mail par environnement. FoxIDs prend en charge l’envoi d’e-mails avec SendGrid et SMTP.
Le fournisseur d’e-mail global est configuré dans le fichier docker-compose-image.yaml ou docker-compose-project.yaml sur le service foxids dans la section environment:.
Cet exemple montre comment ajouter Outlook / Microsoft 365 avec SMTP :
- name: "Settings__Smtp__FromEmail"
value: "my@email-address.org"
- name: "Settings__Smtp__FromName" # Optional from name associated to the email address
value: "e.g, my company name"
- name: "Settings__Smtp__Host"
value: "smtp.office365.com"
- name: "Settings__Smtp__Port"
value: "587"
- name: "Settings__Smtp__Username"
value: "my@email-address.com"
- name: "Settings__Smtp__Password"
value: "xxxxxxx"
Déployer
Créez le déploiement, sélectionnez l’une des trois façons suivantes :
- Tout basé sur des images Docker Hub et en HTTP
docker-compose -f docker-compose-image.yaml -f docker-compose.development-http.yaml up -d
- Partiel basé sur des images générées depuis le code avec des fichiers
Dockerfileet en HTTP
docker-compose -f docker-compose-project.yaml -f docker-compose.development-http.yaml up -d
- Partiel basé sur des images générées depuis le code avec des fichiers
Dockerfileet en HTTP/HTTPS - nécessite un certificat de développement présent.
docker-compose -f docker-compose-project.yaml -f docker-compose.development-https.yaml up -d
Première connexion
Ouvrez votre site FoxIDs Control (http://localhost:8801 ou https://localhost:8401) dans un navigateur.
Il devrait rediriger vers le site FoxIDs où vous vous connectez avec l’utilisateur admin par défaut admin@foxids.com et le mot de passe FirstAccess! (vous devez changer le mot de passe à la première connexion).
Vous êtes ensuite redirigé vers le site FoxIDs Control dans le tenant master. Vous pouvez ajouter d’autres administrateurs dans le tenant master.
Ensuite, cliquez sur le tenant main et authentifiez-vous à nouveau avec le même utilisateur admin par défaut admin@foxids.com et le mot de passe FirstAccess! (vous devez à nouveau changer le mot de passe).
L’utilisateur admin par défaut et le mot de passe sont les mêmes pour le tenant
masteret le tenantmain, mais il s’agit de deux utilisateurs différents.
Vous êtes maintenant connecté au tenant main et pouvez commencer à configurer vos applications et méthodes d’authentification.
Commandes utiles
Voici une liste de commandes pouvant être utiles pendant le déploiement pour voir les détails et effectuer des modifications de déploiement.
Détruire le déploiement
docker-compose -f docker-compose-image.yaml -f docker-compose.development-http.yaml down
# ou
docker-compose -f docker-compose-project.yaml -f docker-compose.development-http.yaml down
# ou
docker-compose -f docker-compose-project.yaml -f docker-compose.development-https.yaml down
Construire l’image avec un fichier Dockerfile
docker build -f ./src/foxids/Dockerfile . -t foxids:x.x.x # x.x.x est la version
# ou
docker build -f ./src/foxids.control/Dockerfile . -t foxids-control:x.x.x # x.x.x est la version
Arrêter un conteneur
docker stop xxx
Supprimer un conteneur
docker rm xxx
Supprimer une image
docker rmi xxx
Lister les volumes
docker volume ls
Supprimer un volume
docker volume rm xxx
Supprimer tous les volumes inutilisés
docker volume prune
Afficher les logs d’un conteneur
Docker logs xxx