Repository navigation
Conversation
- Dockerfile multi-stage repris d'edu-framework : frankenphp_base, frankenphp_prod (port 8080, utilisateur app, docker-entrypoint) et frankenphp_dev (stage par défaut, profiler Excimer) - docker-entrypoint.sh : attend la base de données puis démarre FrankenPHP - .dockerignore : exclut .env, var/, vendor/, docs et secrets de l'image - compose.yaml : build sur le stage frankenphp_dev - .gitignore : composer.lock n'est plus ignoré, l'image de production installe les versions qu'il contient et FrankenDeploy n'envoie que les fichiers suivis par git Voir studoo-app/edu-framework#169 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
studoo-app/edu-framework#169 ajoute le déploiement sur Debian/Ubuntu avec FrankenDeploy (
php bin/edu make:deploy). Les projets des élèves sont créés avec ce skeleton, mais il lui manquait de quoi construire l'image de production : son Dockerfile n'avait qu'un stage, et il n'y avait nidocker-entrypoint.shni.dockerignore. Sans ces fichiers, FrankenDeploy génère des fichiers Symfony (bin/console) et le build échoue.Avec cette PR, un projet créé par
composer create-project studoo/edu-framework-skeletoncontient ces fichiers dès le départ.Changements
Fichiers repris tels quels de la branche
deployd'edu-framework (commit661ded3) :Dockerfilemulti-stage :frankenphp_base: socle commun (extensions PHP, Composer) ;frankenphp_prod: image de production, HTTP sur le port 8080, utilisateur non-rootapp(uid 1000), healthcheck,docker-entrypoint;frankenphp_dev: stage par défaut, avec le profiler Excimer.docker-entrypoint.sh(exécutable) : attend que la base de données réponde, puis démarre FrankenPHP..dockerignore: exclut.env,.env.local,var/,vendor/, la documentation et les dumps SQL de l'image.Modifiés dans le skeleton :
compose.yaml: le servicefrankenphpest construit sur le stagefrankenphp_dev(build.context+build.target)..gitignore: la lignecomposer.lockest retirée. L'image de production faitCOPY composer.json composer.lock, et en build distant FrankenDeploy n'envoie que les fichiers suivis par git. Le lock doit donc être versionné dans les projets.À propos de
composer.lockCette PR n'ajoute pas de
composer.lockau skeleton, qui n'en a jamais versionné.composer create-projectgénère le lock dans le projet de l'élève, et ce lock sera maintenant suivi par git. Revers : dans le dépôt du skeleton lui-même, uncomposer installfera apparaître uncomposer.locknon suivi, à ne pas commiter.Le skeleton dépend de
studoo/edu-framework: dev-main. Ordocker-entrypoint.shappelleConfigCore::loadEnv(), qui n'existe pas encore surmain(ca5968c). Avec le framework actuel demain, le conteneur de production s'arrête au démarrage :La commande
make:deployarrive elle aussi avec #169.Tests
Testé en local (Docker 29.9.1, avec un
composer.lockgénéré localement et non commité) :docker compose configvalide,build.target: frankenphp_devbien pris en comptedocker build --target frankenphp_prod .réussitdocker build --target frankenphp_dev .réussitdeploy(661ded3) à la place devendor/studoo/edu-framework/src: démarre sans base (DB_HOST_STATUS=false), répond HTTP 200 sur le port 8080 et tourne sous l'utilisateurapp(uid 1000)main(ca5968c) : le conteneur s'arrête sur l'erreurloadEnv()(d'où la dépendance à #169)excimer,intl,pdo_mysqletpdo_sqliteprésentesNon testé :
php bin/edu make:deploydans un projet issu du skeleton (nécessite #169 surmain)composer create-projectde bout en bout depuis cette branchedocker-entrypoint.sh(testée côté framework uniquement)docker compose upavec toute la stack (base, mailer, dbgate, phpMyAdmin)Remarque hors périmètre (déjà présent sur
2.x)Le README documente
EDU_PROFILER_BUILD(image avec ou sans Excimer), maiscompose.yamlne passe pas cet argument au build. Dans edu-framework, le blocbuildcontientargs: EDU_PROFILER: ${EDU_PROFILER_BUILD:-1}. Cette PR ne corrige pas ce point ; il peut être aligné séparément.🤖 Generated with Claude Code