Cette brique permet de versionner :
- l'environnement docker, y compris les fichiers de conf apache, sql, les procédures de création de certificats, les backups, etc....
- le script de création de l'environnement de dev, preprod et prod
- les confs des différentes briques
git clone git@github.com:neayi/tripleperformance.git
cd tripleperformance
git clone git@github.com:neayi/insights.git insights
git pull
--> Attention, quand on fait un git pull, on met à jour en même temps les fichiers de conf et le script de mise à jour - potentiellement, les plateformes ne fonctionneront plus parce que leur configuration fait usage d'une extension qui n'est pas encore mise à jour tant qu'on n'aura pas lancé la commande build_project.php
Copier les fichiers .env et docker-compose.override.yml, et éventuellement en configurer les valeurs :
cp .env.dev.dist .env
cp insights/.env.example insights/.env
cp docker-compose.override.yml.dist docker-compose.override.yml
mkdir -p .cache/ssl .cache/composer
Télécharger mkcert pour Windows : https://github.com/FiloSottile/mkcert/releases
Extraire mkcert.exe dans un dossier, par exemple C:\mkcert.
Ajouter ce dossier au PATH pour pouvoir l’exécuter depuis n’importe où :
Win + X → Système → Paramètres système avancés → Variables d’environnement → PATH → Ajouter C:\mkcert\
Installer le CA local (une seule fois) :
rm -rf .cache/ssl && mkdir .cache/ssl
cd .cache/ssl
/mnt/c/mkcert/mkcert.exe -install
/mnt/c/mkcert/mkcert.exe "*.dev.tripleperformance.fr" "*.dev.tripleperformance.ag"
NB : le fait d'utiliser la version Windows de mkcert permet l'installation automatique des certificats dans les navigateurs Chrome, Edge, etc...
Attention : après avoir créé les certificats, il faut absolument recréer le container de Traefik, qui monte ces certificats dans un volume :
docker compose up -d --force-recreate traefik
mkdir geoip
cd geoip
git clone https://github.com/PascalMinder/geoblock.git
- Dev, prod et preprod :
docker compose up --build -d
- Voir https://www.elastic.co/fr/blog/getting-started-with-elasticsearch-security
- En pratique :
- Ouvrir
.envet récupérer le mot de passe utilisé pour ELASTICSEARCH_SERVER - Se rendre dans le container :
docker compose exec elasticsearch bash - Exécuter la commande :
bin/elasticsearch-setup-passwords interactiveet utiliser le mot de passe précédemment récupéré pour tous les users - Utiliser l'identifiant
elasticpour ElasticVue (voir plus loin).
- Web :
docker compose exec web bash - SQL :
docker compose exec db bash - Insights :
docker compose run --rm --user="$UID:$GID" insights_php bash(oudocker compose exec insights_php bashen tant que root et si le service est up)
- Dev : https://elasticvue.dev.tripleperformance.fr/
- Prod : https://elasticvue.tripleperformance.fr/
- Utiliser comme url de connexion : https://elastic:xxxxxxxx@elasticsearch.tripleperformance.fr (mot de passe dans le fichier
.env-->ELASTICSEARCH_SERVER)
Utiliser wiki.php mysql :
php wiki.php mysql backup/DBs/wiki_prod-20211116.sql
NB : il faudra créer un fichier .mysql.cnf dans le dossier backup avec le mot de passe root de la DB :
cat > backup/.mysql.cnf
[client]
password=root
php wiki.php build_project.php --create-env
En cas d'erreur, relancer la commande avec:
php wiki.php build_project.php --update
Ces deux commandes font la création du dossier /var/www/src, dans lesquels on trouvera d'une part un dossier html (le web root de chacun des domaines) et un dossier html/extensions (les extensions et plugins utilisés dans notre setup).
Les fichiers de configuration sont aussi ajoutés via lien symbolique à partir du dossier /var/www/scripts/settings
Une fois le code extrait, il faut ajouter la base de données.
Par défaut, la base créée sera wiki, mais il est possible d'importer aussi une base de prod en créant le fichier bin/sql/wiki_prod.sql avant de lancer le script.
docker compose exec -w /var/sql db ./load_db.sh
docker exec -i tripleperformance_db_1 mysql -u root -p<MYSQL_PASSWORD> wiki < $sql_file_path
docker compose run --rm --user="$UID:$GID" insights_php ./install.sh
docker compose run --rm insights_php chmod -R o+w storage
Il faut aussi ajouter des images pour compléter la configuration. Ces images ne sont pas versionnées, voir avec un membre de l'équipe pour les récupérer d'une autre install.
Dans cette opération, on indexe les pages du wiki dans elasticSearch à partir de la DB :
docker compose exec web php bin/build_project.php --initElasticSearch
On peut vérifier la bonne indexation en allant sur http://elasticvue.dev.tripleperformance.fr/ ou en pratiquant une recherche dans le wiki.
Quand on met à jour tripleperformance, il faut ensuite mettre à jour le code de chaque instance :
docker compose exec web php bin/build_project.php --update
On ira ensuite mettre à jour spécifiquement le wiki :
cd /var/www/html/maintenance
php update.php
php runJobs.php
- L'environnement de Dev a déjà XDebug en place. On peut vérifier avec php -i
- Installer l'extension Chrome XDebug Helper https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
- Configurer l'extension pour VSCode : Mettre comme clé d'IDE le mot clé
VSCODE
docker build -t wiki:latest -f engine/php_server/Dockerfile .
docker build -t insights:latest -f insights/dockerfiles/php/Dockerfile insights
git clone git@github.com:neayi/tripleperformance.git
cd tripleperformance
git clone git@github.com:neayi/insights.git insights
cp .env.prod.dist .env
cp .env.preprod.dist .env.preprod
cp insights/.env.example insights/.env
cp insights/.env.example insights/.env.preprod
Modifier les fichiers .env, et en particulier vérifier la version des images à utiliser (INSIGHTS_VERSION_, WIKI_VERSION_)
mkdir -p .data/elasticsearch && chmod o+w .data/elasticsearch
mkdir -p .data/insights_prod_storage && chmod o+w .data/insights_prod_storage
mkdir -p .data/insights_preprod_storage && chmod o+w .data/insights_preprod_storage
touch .data/acme.json && chmod 600 .data/acme.json
Configurer les fichiers .env, puis :
docker login -u bertrand.gorge@neayi.com -p $PAT docker.pkg.github.com
docker compose -f docker-compose.prod.yml up -d
Avec $PAT un Personal Access Token ayant les droits de lecture sur les packages github.
Lancer la migration d'Insights :
docker compose -f docker-compose.prod.yml exec --user="www-data:www-data" insights php artisan migrate
Pour lancer runJobs.php
docker compose -f docker-compose.prod.yml run --rm web sh -c "php /var/www/html/maintenance/runJobs.php"
Pour importer des images ou un fichier xml :
docker compose -f docker-compose.prod.yml run --rm -v ~/wiki_builder/out/departements:/out web php /var/www/html/maintenance/importImages.php --user="ImportsTriplePerformance" /out/
docker compose -f docker-compose.prod.yml run --rm -v ~/wiki_builder/out/departements:/out web php /var/www/html/maintenance/importDump.php --user="ImportsTriplePerformance" /out/wiki_departements.xml
docker compose -f docker-compose.prod.yml run --rm web sh -c "php /var/www/html/maintenance/rebuildrecentchanges.php && php /var/www/html/maintenance/initSiteStats.php && php /var/www/html/maintenance/runJobs.php"
Pour importer une DB, utiliser la commande :
docker compose -f docker-compose.prod.yml exec -T db mysql -u root --password=xxxxxx wiki < bin/sql/wiki.sql
- Tous les logs doivent être envoyés sur STDOUT ou STDERR, pas dans un fichier