diff --git a/docs/ConseilServeurDev.md b/docs/ConseilServeurDev.md index 9374f893f..06d9452cb 100644 --- a/docs/ConseilServeurDev.md +++ b/docs/ConseilServeurDev.md @@ -7,7 +7,7 @@ Commencez par lire ## Machine virtuelle -Il est confortable de développer dans une VM (un container Docker ferait +Il est confortable de développer dans une VM (un [container Docker](Docker.md) ferait aussi bien l'affaire). ### Conseils pour la machine virtuelle diff --git a/docs/Docker.md b/docs/Docker.md new file mode 100644 index 000000000..a9e346ad0 --- /dev/null +++ b/docs/Docker.md @@ -0,0 +1,77 @@ +# Docker + +!!! example "Avetissement : expérimental" + L'usage de ScoDoc avec Docker est expérimental et n'est pas (encore) recommandé pour une utilisation en production. + +## Prérequis +Assurez-vous d'avoir les éléments suivants installés sur votre machine : + +- Docker +- Docker Compose + +## Installation + +### Télécharger le fichier [`docker-compose.yml`](https://git.scodoc.org/ScoDoc/ScoDoc/src/branch/master/docker-compose.yml) + +```bash +curl -O https://git.scodoc.org/ScoDoc/ScoDoc/raw/branch/master/docker-compose.yml +``` + +!!! info + [WatchTower](https://containrrr.dev/watchtower/) (inclus dans le [`docker-compose.yml`](https://git.scodoc.org/ScoDoc/ScoDoc/src/branch/master/docker-compose.yml#L51-L57)) est un outil qui permet de mettre à jour automatiquement les conteneurs Docker. ScoDoc est mis à jour très régulièrement, il est donc recommandé d'utiliser WatchTower. Retirez le seulement si vous prévoyez d'effectuer les mises à jour manuellement et régulièrement. + +### Modifier la configuration + +Editez les variables d'environnement dans le fichier [`docker-compose.yml`](https://git.scodoc.org/ScoDoc/ScoDoc/src/branch/master/docker-compose.yml) pour personnaliser la configuration de ScoDoc : + +- Container `scodoc` : + - `SCODOC_DATABASE_URI` : URI de connexion postgresql + - `CACHE_REDIS_HOST` : nom d'hôte du serveur Redis/Valkey + - `SCODOC_ADMIN_MAIL` : adresse email de l'administrateur + - `SCODOC_ADMIN_PASSWORD` : mot de passe de l'administrateur + - `SCODOC_MAIL_FROM` : adresse de l'expéditeur des emails envoyés par l'instance ScoDoc + - `MAIL_SERVER` : nom d'hote du serveur SMTP + - `MAIL_PORT` : port du serveur SMTP + - `MAIL_USE_TLS` : booléen pour activer le SMTPS + - `MAIL_USERNAME` : nom d'utilisateur pour l'authentification SMTP + - `MAIL_PASSWORD` : mot de passe pour l'authentification SMTP +- Container `postgres` : + - `POSTGRES_USER` : nom d'utilisateur de la base de données (à utiliser dans l'URI `SCODOC_DATABASE_URI`) + - `POSTGRES_PASSWORD` : mot de passe de la base de données (à utiliser dans l'URI `SCODOC_DATABASE_URI`) + +!!! warning "Avertissement : sécurité" + Ne définisez pas la variable d'environnement `POSTGRES_DB` sur le container `postgres`, le container `scodoc` créera automatiquement la base en utilisant le nom fournit dans l'URI `SCODOC_DATABASE_URI`. + +## Démarrage + +Lancez cette commande pour démarrer ScoDoc : +```bash +docker compose up -d +``` + +Si vous n'avez pas modifié la configuration réseau, ScoDoc sera accessible à l'adresse [http://localhost:8000](http://localhost:8000). + +!!! danger "Avertissement" + Pour des raisons de sécurité, ScoDoc ne doit pas être accessible en http par les utilisateurs, un reverse proxy (par exemple nginx) doit être mis en place pour forcer l'usage du https. + L'accès en http par les utilisateurs expose les mots de passe en clair sur le réseau. + +## Build manuel + +Une image [`scodoc/scodoc`](https://hub.docker.com/r/scodoc/scodoc) est publiée sur Docker Hub mais il est possible de build l'image localement en suivant ces étapes : + +1. Clonez le dépôt ScoDoc : + ```bash + git clone https://git.scodoc.org/ScoDoc/ScoDoc.git + cd ScoDoc + git checkout 9.6.970 # version de ScoDoc à build + ``` + +2. Lancer le build de l'image Docker de ScoDoc (les `--build-arg` sont utilisés pour les [labels OCI](https://specs.opencontainers.org/image-spec/annotations/) et sont donc optionnels si l'image n'a pas vocation à être publiée) : + ```bash + SCOVERSION=$(grep SCOVERSION sco_version.py | awk '{ print substr($3, 2, length($3)-2) }') + docker build --tag scodoc/scodoc:$SCOVERSION \ + --build-arg="SCODOC_VERSION=$SCOVERSION" \ + --build-arg="SCODOC_COMMIT=$(git rev-parse HEAD)" \ + --build-arg="IMAGE_DATE=$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")" \ + . + ``` diff --git a/mkdocs.yml b/mkdocs.yml index a6b53b03b..c26c3c8e2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,6 +67,7 @@ nav: - "Introduction": DevInternals.md - "Utiliser Git": DevGit.md - "Config serveur dev.": ConseilServeurDev.md + - "Docker": Docker.md - "Tests unitaires": TestsScoDoc.md - "Contacts": Contact.md