Dockerizar tu aplicación Symfony
Una vez que empiezas con Docker ya quieres dockerizarlo todo. Como llevo un tiempo trabajando con Symfony para diferentes escenarios, en este artículo quería compartirte la configuración que estoy utilizando para generar mis contenedores, para un entorno de desarrollo.
docker-compose.yml
Como puedes ver, uso Nginx como servidor web, con el que estoy compartiendo un archivo de configuración solo de lectura, con la ruta donde está el código de mi aplicación, /usr/src/app.
Acto seguido, mapeo el directorio public de mi código fuente con /usr/src/app. Además, estoy exponiendo hacia afuera el puerto 8000, que está mapeado con el puerto 80 de Nginx. Por último, a través de depends_on, digo que este contenedor depende del llamado php, que es el que está interpretando mi código a través de php-fmp. En este otro contenedor mapeo el directorio donde está mi código fuente en el host, para que pueda hacer cambios en mi código y que estos se vean reflejados. Por último, en lugar de utilizar una imagen de Docker Hub, o cualquier otro registro, tiene asociado un archivo Dockerfile que será la receta de la imagen que utilizará este contenedor.
El archivo Dockerfile de php
La imagen que queremos crear para el contenedor php básicamente utiliza la imagen de php-fpm sobre la distribución Alpine, la cual es la distribución Linux más ligera, y es realmente buena para trabajar con Docker. Actualizamos el repositorio e instalamos todos los paquetes que nos hacen falta para ejecutar nuestro código PHP, además de poder depurarlo. También instalamos composer para poder ejecutarlo e instalar los paquetes PHP.
Archivo .dockerignore
Todavía no sé todos los trucos para optimizar el tamaño de las imágenes en Docker. Sin embargo, he utilizado .dockerignore para omitir algunas carpetas y aligerar la carga.
Depurar tu contenedor con Symfony
Ya tienes todo listo para desarrollar y ejecutar tu aplicación con Symfony. Si además necesitas depurarla, puedes hacerlo de forma sencilla con Visual Studio Code. Hace un tiempo, escribí los pasos en este artículo para depur código PHPar. En el caso de los contenedores, necesitas que el archivo launch.json tenga esta configuración:
Imagen de portada por ayhan barış.
¡Saludos!