DocScoDoc/docs/Docker.md

5.6 KiB

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

curl -O https://git.scodoc.org/ScoDoc/ScoDoc/raw/branch/master/docker-compose.yml

!!! info WatchTower (inclus dans le docker-compose.yml) 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 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 :

docker compose up -d

Si vous n'avez pas modifié la configuration réseau, ScoDoc sera accessible à l'adresse 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 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 :

    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 et sont donc optionnels si l'image n'a pas vocation à être publiée) :

    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\")" \
                 .
    

Développement

Editez le fichier docker-compose.yml pour que le container scodoc démarre en mode développement :

   scodoc:
     image: scodoc/scodoc
+    entrypoint: tail -f /dev/null
     environment:
+      FLASK_ENV: development
     [...]
     ports:
       - "127.0.0.1:8000:8000"
+      - "127.0.0.1:2222:22"

Démarrez les containers et ouvrez un shell dans le container scodoc :

docker compose up -d
docker exec -it scodoc bash

Puis remplacer /opt/scodoc par un clone du git :

apt-get update
apt-get install git
mv /opt/scodoc /opt/off-scodoc
git clone https://git.scodoc.org/ScoDoc/ScoDoc.git /opt/scodoc
# (ou bien utiliser votre clone gitea si vous l'avez déjà créé !)

# Donner ce répertoire à l'utilisateur scodoc:
chown -R scodoc:scodoc /opt/scodoc

Il faut ensuite installer l'environnement et le fichier de configuration :

# Le plus simple est de piquer le virtualenv configuré par l'installeur :
mv /opt/off-scodoc/venv /opt/scodoc

Et la config:

ln -s /opt/scodoc-data/.env /opt/scodoc

Et enfin démarrer ssh pour pouvoir se connecter avec un IDE :

# Définir un mot de passe à l'utilisateur scodoc pour la connexion ssh
passwd scodoc

# Installer et démarrer le serveur ssh
apt-get install openssh-server
service ssh start

Vous pouvez maintenant vous connecter sur votre IDE avec ssh scodoc@127.0.0.1 -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null et le mot de passe défini précédemment.

Pour démarrer ScoDoc, en tant que root depuis le shell docker exec, il suffit de lancer :

/opt/scodoc/tools/docker-entrypoint.sh

ScoDoc sera accessible sur http://127.0.0.1:8000/. Utilisez Ctrl+C pour l'arrêter.