Site portfolio refondu sous Symfony 8 avec Docker, un back-office EasyAdmin et une structure pensée pour rester simple à maintenir.
Portfolio : page d’accueil avec travaux, positionnement et aperçus du projet Civitalisme.About me : parcours, environnement de travail, passions et lien d’album configurable.Civitalisme : une page grand public et une page technique / institutionnelle reliées entre elles.Contact : formulaire protégé contre le spam, stockage minimal en base et lecture dans l’admin.bash bin/docker-up-lite
docker compose -f compose.yaml exec -T php php bin/console doctrine:migrations:migrate --no-interaction
docker compose -f compose.yaml exec -T php php bin/console doctrine:fixtures:load --no-interaction
http://localhost:8080 via nginxhttp://localhost:8025 uniquement si tu lances bash bin/docker-up-lite --with-mailerCette stack est pensée pour rester fluide quand plusieurs projets tournent en même temps :
php limité à 1 CPU, 768 MBnginx limité à 0.25 CPU, 128 MBdatabase limitée à 0.75 CPU, 512 MBmailer désactivé par défautphp-fpm volontairement bridé à peu de workersmemory_limit PHP local ramené à 256MCommande recommandée :
bash bin/docker-up-lite
Si tu as besoin du Mailpit ponctuellement :
bash bin/docker-up-lite --with-mailer
Les valeurs par défaut sont dans .env et doivent être changées avant toute mise en production :
admin@portfolio.localChangeMePlease!123Pour recréer ou mettre à jour le compte admin :
docker compose -f compose.yaml exec -T php php bin/console app:admin:create admin@portfolio.local "mot-de-passe-fort"
APP_SECRET : secret Symfony, à changer absolument en prod.APP_ALBUM_URL : lien vers l’album affiché sur la page About me.ADMIN_EMAIL / ADMIN_PASSWORD : bootstrap du compte admin dans les fixtures.MAILER_DSN : DSN de mail réel si le formulaire doit envoyer des mails plus tard.rate_limiter.httponly et SameSite=Lax.Pour un VPS simple :
docker compose -f compose.yaml -f compose.override.yaml up -d --build php nginx database
docker compose -f compose.yaml exec -T php php bin/console doctrine:migrations:migrate --no-interaction
docker compose -f compose.yaml exec -T php php bin/console app:admin:create "email@domaine.tld" "mot-de-passe-fort"
Le compose.override.yaml est prévu pour le confort local : ports exposés, montage du code, persistance séparée de vendor/ et var/, et démarrage léger pour le développement.
nginx : point d’entrée HTTP et service de visualisation du site.php : exécution Symfony via php-fpm.database : PostgreSQL.mailer : Mailpit pour les tests locaux, lancé seulement à la demande via le profil tools.Le port HTTP exposé est configurable via APP_PORT et vaut 8080 par défaut.