Práctica 1 (1 / 2): Implantación de aplicaciones web PHP en docker
Imaginemos que el equipo de desarrollo de nuestra empresa ha desarrollado una aplicación PHP que se llama Biblioteca(https://github.com/VidaInformatico/Sistema-de-biblioteca-basico-php-8-y-mysql).
Queremos crear una imagen Docker para implantar dicha aplicación.
Tenemos que tener en cuenta los siguientes aspectos:
- Es necesario que nuestra aplicación guarde su información en un contenedor docker mariadb.
- En la creación del contenedor de base de datos, usando variables de entorno, se creará una base de datos, un usuario y su contraseña.
- El contenedor mariadb debe tener un volumen para guardar la base de datos.
-
Antes de generar la imagen, modifica el fichero
Config/Config.php
para que lea las variables de entorno. Para obtener las variables de entorno en PHP usar la funcióngetenv
. Para más información. Los cambios que tenemos que realizar para crear las constantes con el valor de las variables de entorno es la siguiente. Si tenemos en el fichero original:const base_url = "http://localhost/biblio/";
Hay que sustituirlo por:
define('base_url',getenv('BASE_URL'));
Así con cada una de las variables.
- La imagen debe crear las variables de entorno necesarias con datos de conexión por defecto.
- Al crear un contenedor a partir de estas imágenes se ejecutará un script bash llamado
docker-entrypoint.sh
que realizará las siguientes tareas:- Se asegura que el contenedor mariadb está funcionando. Por ejemplo, puedes hacer un bucle hasta que puedas conectar a la base de datos.
- Inicialice la base de datos con el fichero
biblioteca.sql
. - Ejecute el servidor web.
- El contenedor que creas debe tener un volumen para guardar los logs del servidor web.
- La imagen debe tener activa el mod_rewrite de apache2.
- Debemos configurar el apache2 para permitir el uso de ficheros
.htaccess
. Para ello necesitamos cambiar la configuración del fichero/etc/apache2/apache2.conf
. Esto se puede hacer de varias formas:- Copiando un fichero
apache2.conf
con la modificación hecha en la imagen. - Que el script
docker-entrypoint.sh
modifique el ficheroapache2.conf
con la utilidadsed
por ejemplo.
- Copiando un fichero
- La imagen la tienes que crear en tu entorno de desarrollo con el comando
docker build
.
Creación de una imagen docker con una aplicación web desde una imagen base
- Vamos a crear una imagen que se llame
usuario/biblioteca:v1
. - Crea una imagen docker con la aplicación desde una imagen base de debian o ubuntu o desde una imagen php.
- Está imagen debe tener apache2 instalado y todas las características indicadas anteriormente.
- Entrega el fichero
Dockerfile
. - Entrega una captura de pantalla donde se vea la imagen en el registro de tu entorno de desarrollo.
Despliegue en el entorno de desarrollo
- Utiliza Docker Compose para levantar el escenario con los dos contenedores.
- Recuerda que para acceder a la aplicación: Usuario: admin, contraseña: admin.
- Entrega el fichero
docker-compose.yaml
. - Entrega la instrucción para ver los dos contenedores del escenario funcionando.
- Entrega una captura de pantalla donde se vea funcionando la aplicación, una vez que te has logueado.