Salut,
Perso, je ne fais pas d'angular mais dans mon équipe de dev, on utilise plusieurs frameworks js et dans l'ensemble c'est le même principe quel que soit le framework js quand on veut embarquer son front dans l'app symfony (si on fait juste une api et une SPA qui l'interroge, c'est différent).
Donc voilà comment je procède.
1 - J'ai un docker-compose.yml (ou compose.yaml en version récente de docker) dans lequel je définie les services utiles en prod.
Ce docker-compose contient un service qui fait tourner apache/php et qui référence un Dockerfile (multi-step) dans lequel :
- je builde mes assets js/css à partir d'une image node
- je copie mes assets buildés depuis l'image node (que je mets à la poubelle) vers mon image apache/php qui sert pour la prod
2 - J'ajoute un fichier docker-compose.override.yml ( ou compose.override.yaml) pour surcharger avec les services utiles seulement en dev.
Donc dans celui-ci, je surcharge les chemins pour apache pour qu'il trouve mes fichiers php de symfony et j'ajoute un service nodejs avec une commande 'npm i && npm run dev' ou 'yarn && yarn dev' (au choix) qui me fait le build en temps réel et le live reload.
Je n'utilise pas le binaire symfony car je gère toute ma stack en docker mais si tu ne l'utilise qu'en dev, il suffit de modifier le docker-compose.override fourni par symfony pour ajouter node et faire le build en temps réel de tes assets.
Voici un exemple de config pour node dans le docker-compose.override.yml (port 3000 par défaut et le port 6006 car dans ce projet, j'avais un storybook pour documenter mon front) :
nodejs:
image: 'node:lts-slim'
working_dir: /home/node/app
container_name: front
command:
- /bin/sh
- '-c'
- 'npm install && npm run dev'
volumes:
- './:/home/node/app:rw'
ports:
- '3000:3000'
- '6006:6006'