Cómo crear un contenedor Docker con PHP y Nginx

La forma más sencilla para crear contenedores de Docker que contengan el servidor web Nginx y PHP instalado junto con las extensiones que necesitemos y otros servicios comunes en el desarrollo de aplicaciones web, es utilizando el generador de contenedores PhpDocker.io.

Al entrar en la página, nos muestra una breve descripción del servicio:

PhpDocker.io es una herramienta que te ayuda a construir el entorno de desarrollo típico de PHP en un contenedor de Docker con unos pocos clicks. Soporta los servicios más comunes (MySQL/MariaDB, Redis, Elasticsearch …), y más que están por llegar. Soporta PHP 7.1, además de la versión 7.0 y la 5.6.

Para generar nuestro contenedor pinchamos en el enlace Generator.

En el primer bloque, seleccionamos la configuración básica de nuestro contenedor:

  • Project name: El nombre de nuestro proyecto.
  • Base port: El puerto donde se ejecutará nuestro contenedor.
  • Application type: El tipo de aplicación de PHP (Genérica, Symfony, Phalcon 3, Silex). En esta opción, si por ejemplo elegimos Symfony, nos configurará Nginx para que funcione con una aplicación de Symfony (vinculando el archivo app.php como controlador frontal, etc).
  • Max upload size (MB): Límite de tamaño por archivo para las subidas al servidor.

En el segundo bloque, debemos especificar la versión que queremos de PHP y las extensiones que necesitemos.

php-config

Más abajo, el generador nos permite añadir otros servicios a nuestro contenedor múltiple. Estos servicios son MySQL, MariaDB, Postgres, Elasticsearch, Memcached, Redis y Mailhog.

Servicios PHP Docker

Y por último, pinchamos en el botón Generate project archive, lo que nos generará un archivo .zip que incluye lo siguiente:

  • docker-compose.yml
  • phpdocker: En esta carpeta se incluyen los servicios que hemos añadido junto con sus archivos de configuración.
  • Readme.htnl: Un archivo HTML donde nos indica cómo ejecutar nuestro contenedor.
  • Readme.md

He creado un repositorio en Github donde podéis ver como tengo configurado un proyecto con Symfony utilizando Nginx y PHP-FPM 7.1.

Además, dentro del contenedor de PHP-FPM he instalado las extensiones MySQL y LDAP de PHP junto con GIT y Composer.

Para cualquier duda o sugerencia podéis dejar un comentario en la entrada.