Skip to content

feat(docker): add a development environment - #38

Merged
Amorfx merged 5 commits into
mainfrom
feat/docker
Oct 12, 2026
Merged

Amorfx merged 5 commits into
mainfrom
feat/docker

Conversation

@Amorfx

@Amorfx Amorfx commented Oct 12, 2026

Copy link
Copy Markdown
Owner

Contexte

Étape 6b de la feuille de route. Le dépôt simply-docker est cassé et n'est plus maintenu depuis mars 2024 :

  • la configuration PHP-FPM n'est jamais chargée ;
  • la base n'est pas attendue au démarrage, ce qui provoque une boucle de redémarrage ;
  • le blocage du PHP dans les uploads vise le mauvais dossier ;
  • des identifiants root/root sont commités ;
  • Node 18 est en fin de vie.

Décision prise : livrer un environnement de développement dans le boilerplate, construit sur le montage du site de test qui sert depuis le début de la remise à niveau, puis archiver simply-docker.

Changements

  • compose.yaml :
    • db : MariaDB 11.4 avec un healthcheck, et un mot de passe root aléatoire ;
    • web : PHP-Apache en 8.4 par défaut, réglable avec PHP_VERSION (8.2 à 8.4) ;
    • Compose lit DB_NAME, DB_USER et DB_PASSWORD dans le .env du projet, et s'arrête avec un message clair s'ils manquent ;
    • le site n'écoute que sur 127.0.0.1 (HTTP_PORT, 8080 par défaut).
  • docker/ :
    • Dockerfile : extensions WordPress, Composer, WP-CLI 2.12. www-data est remappé sur USER_ID/GROUP_ID pour pouvoir écrire dans le projet monté sous Linux ;
    • vhost.conf : la racine est web/, le PHP est interdit dans les uploads, et les .yaml/.lock sont refusés ;
    • php.ini : réglages de développement.
  • docker/setup.sh (bash docker/setup.sh), qu'on peut relancer sans risque :
    • il remplace les sels generateme ;
    • il lance composer install ;
    • il vérifie la base, et en cas d'échec il affiche la vraie erreur avec un conseil (DB_HOST=db, docker compose down -v) ;
    • il installe WordPress et règle les permaliens.
  • .env.example : DB_USER/DB_PASSWORD passent de root à wordpress. MariaDB refuse de créer un utilisateur root, et un compte root est de toute façon un mauvais défaut.
  • README : section « Development environment with Docker ».
  • CI : un job démarre réellement l'environnement, installe WordPress et vérifie le site et bin/console.

Environnement réservé au développement, comme le dit le README : erreurs affichées, compte admin/admin.

Vérification

J'ai créé des projets jetables à partir de l'archive git de la branche, comme le ferait create-project (sans .github/), sur macOS avec OrbStack :

  • démarrage sain avec --wait ;
  • setup.sh installe WordPress, et le relancer ne change rien ;
  • site et page de connexion à 200, 7 commandes simply: ;
  • PHP dans les uploads et .lock à 403, .env inaccessible ;
  • cache Simply créé par l'uid de l'hôte ;
  • sans .env : arrêt de Compose avec un message clair ;
  • setup.sh non exécutable : bash docker/setup.sh fonctionne ;
  • mauvais mot de passe : la vraie erreur Access denied est affichée.

Relecture indépendante : 4 points importants (port exposé, .env manquant, bit exécutable, erreur masquée), tous corrigés et vérifiés.

🤖 Generated with Claude Code

Amorfx and others added 5 commits October 13, 2026 00:28
PHP-Apache (8.2 to 8.4) and MariaDB with a health check, based on the
setup used to test the Simply packages. Apache runs with the uid/gid of
the host user so that it can write in the mounted project on Linux.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ment

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The MariaDB image refuses to create a user named root, and a root
database account is a poor default anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s and show database errors

The development site (admin/admin, errors displayed) was published on every
interface. A missing .env started MariaDB without database nor user. setup.sh
hid the real database error and depended on its executable bit, which
Composer drops when unzip is not installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Amorfx
Amorfx merged commit 9d135f4 into main Oct 12, 2026
4 checks passed
@Amorfx
Amorfx deleted the feat/docker branch October 12, 2026 22:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant