Separación por responsabilidad
El frontend sirve la aplicación Vue, el backend ejecuta PHP y expone la API, y MySQL conserva los datos. Esta separación permite actualizar una parte sin reconstruir todo el entorno.
Estructura de carpetas
proyecto/
frontend/
Dockerfile
index.html
backend/
Dockerfile
index.php
docker-compose.ymlComunicación interna
Dentro de Docker Compose los servicios pueden comunicarse usando el nombre del servicio. El backend no necesita conocer una IP fija de MySQL; puede conectarse a un host llamado, por ejemplo, db.
Subida de archivos
Si el sistema permite subir documentos, hay que revisar dos límites: el del servidor web del frontend o proxy y el de PHP. Un error típico es aumentar upload_max_filesize en PHP pero olvidar client_max_body_size en Nginx.
Persistencia
La base de datos debe usar un volumen para que eliminar el contenedor no elimine los datos. Los documentos subidos también necesitan un volumen si deben sobrevivir a una reconstrucción.
Cuándo usar esta estructura
Funciona muy bien en proyectos pequeños o de laboratorio porque mantiene claras las responsabilidades sin introducir Kubernetes ni infraestructura innecesaria.