Ce dossier contient les éléments permettant de dockeriser l'application Mercator avec docker-compose.
copier le dépot source
git clone https://github.com/dbarzin/mercator
Aller dans le répertoire mercator
cd mercator/docker
Recopier le fichier de configuration ../.env.example et docker-compose.yml.tmpl
cp ../.env.example .env
cp docker-compose.yml.tmpl docker-compose.yml
Modifier la variable DB_HOST=db ; la valeur doit correspondre au nom du container dans docker-compose.yml (db)
sed -i -e 's/DB_HOST=127.0.0.1/DB_HOST=db/' .env
Toutes les valeurs du fichier peuvent être modifiées selon votre convenance, mais celle-ci doivent être fixées :
URL du service d'un point de vue externe (en dehors du reverse-proxy)
APP_URL=https://mercator.mydomain.com/
ASSET_URL=https://mercator.mydomain.com/
Base de données Mysql
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=mercator
DB_USERNAME=mercator_user
DB_PASSWORD=s3cr3t
- la valeur pour
APP_URL
doit correspondre au nom du service dans ledocker-compose.yml
- de même, le nom du service est db dans ce même fichier (
DB_HOST
)
Deux modèles de configuration du reverse-proxy sont fournis dans le répertoires assets pour Apache et Nginx. D'autre part, la commande permettant de générer le certificat let's Encrypt sera de la forme:
certbot --nginx --non-interactive --agree-tos --email admin@mydomain.com --no-eff-email --domain mercator.mydomain.com
Avant le démarrage de l'application, il est nécessaire de procéder à un build du container ; ensuite, l'ordre habituel des commandes docker-compose s'enchainent.
Aller dans le répertoire d'exploitation docker
cd docker
Recopier le fichier docker-compose.yml.tmp afin d'apporter vos propres adaptations
cp docker-compose.yml.tmpl docker-compose.yml
Build du container mercator en local
docker-compose build
Démarrage des 2 services app et db
docker-compose up -d
L'application répond sur le pour 8000 ; login par défaut: admin@admin.com / password
wget http://127.0.0.1:8000
Pour observer les logs applicatifs
docker-compose logs -ft
Aller dans le répertoire d'exploitation docker
cd docker
Arret des 2 services db et app
docker-compose down
Redémarrage de l'application:
docker-compose up -d
Il est nécessaire de faire un restart à chaque fois :
- que le code source est modifié
- que la configuration est modifiée
- que l'environnement d'exécution est modifié en particulier
entrypoint.sh
Il est possible d'ouvrir un shell intéractif sur l'un des deux services app ou db
ouverture d'un shell ; app ou db
docker-compose exec app /bin/bash
- les seules données à sauvegarder résident dans la base Mysql. Des éléments sont fournis sur dans la procédure d'installation de Mercator.
- le script
./bin/mysql/backup
permet de réaliser l'opération de backup simplement ; il est monté dans le container docker par unbind
(primitivevolumes
dans le docker-compose.yml) - pour l'activer il suffit d'invoquer :
docker-compose exec db /app/backup
- la base de données est sauvegardée dans un volume local :
./data/backup/sql/mercator.sql.gz
fixme.
- donner des indications concernant la procédure de MAJ applicative.
- le fonctionnement de l'application derrière un reverse-proxy ne fonctionne pas ; voir ticket :
- bug résiduel concernant le formulaire d'authentification qui passe en HTTP(80) au lieu de HTTPS(443). Le reste du paramétrage semble OK.