Aller au contenu

Configuration d'un environnement de développement#

Une instance locale fonctionnelle pour le développement peut être lancée via docker compose qui installera et configurera toutes les dépendances dans des conteneurs séparés. Ainsi, votre ordinateur n'aura besoin que de :

Si docker compose vous pose des problèmes, assurez-vous qu'il peut se connecter au démon docker.

Si vous utilisez un Mac Apple Silicon, assurez-vous que export DOCKER_DEFAULT_PLATFORM=linux/amd64 est défini.

Un dossier pgdata-iaso, contenant les données de la base de données, sera créé dans le répertoire parent du dépôt git.

Variables d'environnement#

Le fichier docker-compose.yml contient des valeurs par défaut appropriées pour l'application Django.

Other environment variables can be provided by a .env file.

Pour commencer, vous pouvez copier le fichier exemple .env.dist et le modifier selon vos besoins.

cp .env.dist .env

Note: All the commands here need to be run in the project directory in which the repository was cloned.

Activer le plugin Polio#

Ajoutez cette ligne à votre fichier .env pour activer le plugin Polio:

PLUGINS=polio

Construire les conteneurs#

Cela va construire et télécharger les conteneurs.

docker-compose build

Démarrer le serveur de base de données#

docker-compose up db

Exécuter les migrations#

docker-compose run --rm iaso manage migrate

Si vous obtenez un message disant que la base de données iaso n'existe pas, vous pouvez vous connecter à votre instance postgres en utilisant

psql -h localhost -p 5433 -U postgres

Ensuite, tapez

create database iaso; 

pour créer la base de données manquante.

Démarrer le serveur#

Pour démarrer tous les conteneurs (backend, frontend, db)

docker-compose up

Le serveur web sera accessible à l'adresse http://localhost:8081.

Le fichier docker-compose.yml décrit la configuration des conteneurs.

Créer un superutilisateur#

Pour se connecter à l'application ou l'interface d'administration Django, un superutilisateur doit être créé avec :

docker-compose exec iaso ./manage.py createsuperuser

Vous pouvez maintenant vous connecter à l'interface d'administration à l'adresse http://localhost:8081/admin.

Ensuite, des utilisateurs avec des groupes et permissions personnalisés peuvent être ajoutés via l'interface d'administration Django ou chargés via des fixtures.

Créer et importer des données#

Pour créer le compte initial, le projet et le profil, faites ce qui suit:

docker-compose exec iaso ./manage.py create_and_import_data

Vous pouvez maintenant vous connecter à http://localhost:8081 mais vous devez encore importer vos données.

Commencer à développer des fonctionnalités#

Vous pouvez maintenant commencer à développer des fonctionnalités supplémentaires sur Iaso!

Sauvegarder la base de données#

Pour créer une copie de votre base de données iaso dans un fichier (sauvegarde), vous pouvez utiliser :

docker-compose exec db pg_dump -U postgres iaso  -Fc > iaso.dump

Le fichier de sauvegarde sera créé sur votre machine hôte. Le -Fc signifie qu'il utilisera un format optimisé Postgres (qui prend moins de place). Si vous voulez utiliser la commande sql brute, utilisez -Fp.

Restaurer la base de données à partir d'une sauvegarde#

Assurez-vous que le serveur de base de données est en cours d'exécution mais pas le reste. Fermez votre docker compose, assurez-vous qu'il est arrêté avec

docker-compose down

Lancez le serveur de base de données avec

docker-compose up db

Choisissez un nom pour votre base de données. Dans cet exemple, il sera iaso5.

Vous pouvez lister les bases de données existantes en utilisant :

docker-compose exec db psql -U postgres -l

Créez la base de données :

docker-compose exec db psql -U postgres -c "create database iaso5"

Restaurez le fichier de sauvegarde pour mettre les données dans votre base de données :

cat iaso.dump | docker-compose exec -T db pg_restore -U postgres -d iaso5 -Fc --no-owner /dev/stdin

Editez votre fichier .env pour utiliser cette base de données dans les paramètres RDS_DB_NAME.

Démarrez Iaso. Fermez votre docker compose (voir 0) et relancez-le entièrement. Attention: Les modifications dans votre fichier .env ne sont pas prises en compte à moins que vous n'arrêtiez complètement votre docker compose.

Health#

Sur l'url /health/ vous pouvez trouver la version de Iaso, l'environnement, le temps de déploiement, etc... qui peuvent vous aider à comprendre comment cette instance de serveur est déployée pour le débogage. E.g. https://www.poliooutbreaks.com/health/

Live Bluesquare components#

Il est possible de configurer le projet pour charger une version de Bluesquare components à partir d'un dépôt git local au lieu de celle installée à partir d'un package.

Cela permet le développement de fonctionnalités nécessitant des modifications dans le code des composants.

Pour ce faire:

  • placez le dépôt dans le dépôt parent de Iaso ../bluesquare-components/
  • installez la dépendance pour les composants Bluesquare en exécutant npm install dans son répertoire
  • définissez la variable d'environnement LIVE_COMPONENTS=true
  • démarrez votre docker compose
cd ..
git clone git@github.com:BLSQ/bluesquare-components.git
cd  bluesquare-components
npm ci
cd ../iaso
LIVE_COMPONENTS=true docker-compose up

De cette façon, la page se recharge automatiquement si vous modifiez le code des composants Bluesquare.

Cette fonctionnalité fonctionne également si vous lancez webpack en dehors de docker.

Si vous rencontrez un problème, vérifiez d'abord que votre dépôt est sur la bonne branche et que les dépendances sont à jour

Task worker#

Dans le développement local, vous pouvez lancer un worker pour les tâches en arrière-plan en utilisant la commande:

docker-compose run iaso manage tasks_worker

Alternativement, vous pouvez appeler l'url tasks/run_all qui va lancer toutes les tâches en attente dans la file.

Personnalisation#

Vous pouvez remplacer le titre, le logo et les couleurs par défaut de l'application en utilisant le fichier .env et en spécifiant ces variables:

THEME_PRIMARY_COLOR="<hexa_color>"
THEME_PRIMARY_BACKGROUND_COLOR="<hexa_color>"
THEME_SECONDARY_COLOR="<hexa_color>"
APP_TITLE="<app_title>"
FAVICON_PATH="<path_in_static_folder>"
LOGO_PATH="<path_in_static_folder>"
SHOW_NAME_WITH_LOGO="<'yes' or 'no'>"

Ces paramètres sont optionnels et utiliseront une valeur par défaut si rien n'est fourni.