Ik ben een symfony webapplicatie aan het migreren naar docker en heb hier een aantal problemen/vragen bij. Het is de bedoeling dat mysql, nginx en de app zelf in verschillende containers zitten. De applicatiecontainer heeft beiden php-fpm en nodejs geinstalleerd.
Het probleem waar ik momenteel op stoot, is dat zowel de nginx als de app (php-fpm) container gedeeld toegang moeten krijgen tot de document root. De reden hiervoor is dat de document root een hele boel assets bevat, die zowel statisch aangeboden moeten worden door nginx als bewerkt moeten kunnen worden door php. Als oplossing dacht ik een docker volume te maken van enkel de document root, waardoor de containers gedeeld aan de bestanden kunnen, maar hier duikt een nieuw probleem op waar ik niet goed weg mee weet.
Eerst en vooral, om wat meer duidelijkheid te scheppen, is dit mijn projectstructuur: https://image.prntscr.com/image/1tqFVaJ6TLuvAYP0E_j5jg.png.
Mijn dockerfiles zijn universeel voor zowel development als production, en voor elk van deze environments heb ik een docker compose bestand. Binnen het docker compose bestand voor development zou er een bind mount voorzien moeten worden naar de app container (`./:/var/www/app`), en hier zit mijn verwarring:
Als er een bind mound is naar de gehele directory, wat gebeurt er dan met het docker volume naar de document root (public map)? Dit is trouwens enkel een probleem binnen de development environment, omdat bij production die bind mount niet nodig is. Is het mogelijk eerst de bind mount te maken om vervolgens in die bind mount de document root (public) te overriden zodat daar het docker volume gebruikt wordt?
Een mogelijke oplossing lijkt me simpelweg de document root uit de bestandshierarchie verwijderen (2 mappen `public` en `app`), maar ik weet niet of symfony hier gelukkig mee zal zijn. Ik zou natuurlijk ook gewoon van de nginx en app containers 1 container kunnen maken, maar ik wil eerst weten of er een (betere) oplossing is voor bovenstaande probleemstelling.
Het probleem waar ik momenteel op stoot, is dat zowel de nginx als de app (php-fpm) container gedeeld toegang moeten krijgen tot de document root. De reden hiervoor is dat de document root een hele boel assets bevat, die zowel statisch aangeboden moeten worden door nginx als bewerkt moeten kunnen worden door php. Als oplossing dacht ik een docker volume te maken van enkel de document root, waardoor de containers gedeeld aan de bestanden kunnen, maar hier duikt een nieuw probleem op waar ik niet goed weg mee weet.
Eerst en vooral, om wat meer duidelijkheid te scheppen, is dit mijn projectstructuur: https://image.prntscr.com/image/1tqFVaJ6TLuvAYP0E_j5jg.png.
Mijn dockerfiles zijn universeel voor zowel development als production, en voor elk van deze environments heb ik een docker compose bestand. Binnen het docker compose bestand voor development zou er een bind mount voorzien moeten worden naar de app container (`./:/var/www/app`), en hier zit mijn verwarring:
Als er een bind mound is naar de gehele directory, wat gebeurt er dan met het docker volume naar de document root (public map)? Dit is trouwens enkel een probleem binnen de development environment, omdat bij production die bind mount niet nodig is. Is het mogelijk eerst de bind mount te maken om vervolgens in die bind mount de document root (public) te overriden zodat daar het docker volume gebruikt wordt?
Een mogelijke oplossing lijkt me simpelweg de document root uit de bestandshierarchie verwijderen (2 mappen `public` en `app`), maar ik weet niet of symfony hier gelukkig mee zal zijn. Ik zou natuurlijk ook gewoon van de nginx en app containers 1 container kunnen maken, maar ik wil eerst weten of er een (betere) oplossing is voor bovenstaande probleemstelling.