Files
pta/docs/README_DOCKER.md
2026-08-20 13:22:49 +02:00

3.1 KiB

PTA - Docker / Nginx / PHP / MariaDB / phpMyAdmin

Installation

Copier les fichiers de ce kit à la racine du projet PTA :

  • Dockerfile
  • docker-compose.yml
  • .env.example
  • docker/nginx/default.conf
  • docker/php/php.ini
  • docker/db/apply-migrations.sh
  • database/pta_prod_schema_mariadb.sql
  • database/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_migration mémorise les fichiers déjà appliqués — rien n'est rejoué inutilement ;
  • le service php ne 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_HOST
  • PTA_DB_PORT
  • PTA_DB_NAME
  • PTA_DB_USER
  • PTA_DB_PASS

Le compose les fournit automatiquement au conteneur PHP.