# Continuer le developpement sur Debian

## Prerequis

Installer Docker Engine, le module Compose, `make`, `openssl` et Git. Ajouter
l'utilisateur de developpement au groupe Docker, puis ouvrir une nouvelle
session.

## Premier demarrage

Depuis la racine du projet :

```bash
chmod +x scripts/init-debian.sh docker/build-release.sh
make init
make config
make dev
```

L'application est disponible sur `http://127.0.0.1:5080`. Le script
d'initialisation affiche le jeton necessaire au premier acces au wizard. Le
code source est monte dans le conteneur et les modifications sont rechargees
automatiquement.

Commandes courantes :

```bash
make logs
make test
make stop
```

## Import du dump SQL conserve

Le fichier `gmao_db_dump.sql` est volontairement livre avec le dossier. Il peut
contenir des donnees operationnelles : ne pas publier le depot sans verifier
son contenu et ses droits d'acces.

Pour l'importer dans une base neuve, demarrer MariaDB puis executer :

```bash
docker compose up -d mariadb
docker compose exec -T mariadb sh -c \
  'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' \
  < gmao_db_dump.sql
```

MariaDB demande le mot de passe `MARIADB_PASSWORD` genere dans `.env.docker`.
Ne pas rejouer le dump sur une base deja renseignee sans sauvegarde.

## Developpement et production

`docker compose up` charge automatiquement `docker-compose.override.yml` : les
sources locales sont montees et le rechargement automatique est actif.

La production ignore ce fichier de developpement :

```bash
./docker/build-release.sh
GMAO_VERSION="$(tr -d '\r\n' < VERSION)" docker compose -f docker-compose.yml up -d
```

Dans ce mode, le code est integre a l'image versionnee. Seuls MariaDB, les
sauvegardes, les televersements et les donnees d'execution restent dans des
volumes persistants.

## Contenu volontairement absent du dossier propre

- `.venv`, caches Python et caches de tests ;
- `.env` et `.env.docker` contenant les secrets de la machine Windows ;
- `_archive`, qui ne contient que les anciennes versions mises de cote ;
- donnees d'execution et televersements locaux.

Les fichiers `.sql`, les exemples de configuration, les migrations et les tests
sont conserves.
