3.1 KiB
PTA - Docker / Nginx / PHP / MariaDB / phpMyAdmin
Installation
Copier les fichiers de ce kit à la racine du projet PTA :
Dockerfiledocker-compose.yml.env.exampledocker/nginx/default.confdocker/php/php.inidocker/db/apply-migrations.shdatabase/pta_prod_schema_mariadb.sqldatabase/migration_*.sql
Puis :
cp .env.example .env
nano .env
Changer impérativement DB_PASSWORD et DB_ROOT_PASSWORD.
Démarrer :
docker compose up -d --build
Application :
http://IP_DU_SERVEUR:8080
phpMyAdmin est volontairement publié sur 127.0.0.1:8081 par défaut et exige
un identifiant MariaDB à chaque connexion. Ne pas définir PMA_USER /
PMA_PASSWORD dans le compose : ces variables font basculer phpMyAdmin en
auth_type=config, c'est-à-dire une session déjà ouverte pour quiconque
atteint le port.
Sur le serveur lui-même :
http://127.0.0.1:8081
Pour y accéder depuis un poste distant, le plus sûr est un tunnel SSH :
ssh -L 8081:127.0.0.1:8081 utilisateur@serveur
Puis ouvrir localement :
http://127.0.0.1:8081
Base de données
Le schéma database/pta_prod_schema_mariadb.sql est exécuté automatiquement uniquement
lorsque le volume MariaDB est créé pour la première fois.
Il ne sera PAS rejoué à chaque démarrage du conteneur.
Migrations
Les fichiers database/migration_*.sql sont appliqués automatiquement à chaque
docker compose up, par le service jetable db-migrate :
- il attend que MariaDB soit sain, puis joue les migrations dans l'ordre alphabétique ;
- la table
schema_migrationmémorise les fichiers déjà appliqués — rien n'est rejoué inutilement ; - le service
phpne démarre qu'après sa sortie en succès : une migration en échec arrête le déploiement au lieu de faire tourner l'application sur une base incomplète ; - il vérifie pour finir la présence des sept vues de contrôle d'accès de la V7.8.
Il n'est donc plus nécessaire de supprimer le volume ni d'exécuter les migrations à la main.
# Compte rendu de la dernière application
docker compose logs db-migrate
# Rejouer les migrations sans toucher au reste de la pile
docker compose up -d --force-recreate db-migrate
Toute nouvelle migration doit être écrite idempotente (CREATE TABLE IF NOT EXISTS,
INSERT ... ON DUPLICATE KEY UPDATE, CREATE OR REPLACE VIEW) : un fichier dont le contenu
change après coup est rejoué.
Commandes utiles
# Etat
docker compose ps
# Logs
docker compose logs -f nginx php db
# Rebuild après modification du PHP / JS / CSS
docker compose up -d --build php nginx
# Journal de l'application des migrations
docker compose logs db-migrate
# Arrêt
docker compose down
# Arrêt SANS supprimer les données
docker compose down
# ATTENTION : supprime la base MariaDB persistée
docker compose down -v
Connexion de l'application
Le config.php PTA utilise déjà les variables :
PTA_DB_HOSTPTA_DB_PORTPTA_DB_NAMEPTA_DB_USERPTA_DB_PASS
Le compose les fournit automatiquement au conteneur PHP.