Cómo levantar un entorno

Hay que tener previamente instalado Docker y docker-compose

El proceso de levantar un entorno es el siguiente:

  • Entrar en la consola/terminal.

  • Ubicarnos en la raíz del proyecto.

  • Sí es la primera vez que se levanta este entorno antes hay que construirlo con el comando docker-compose build

  • Ejecutar el comando docker-compose up -d

  • Trabajar.

Así de sencillo.

Ejemplo Entorno para PHP

Objetivo: Crear un entorno con PHP + Apache + MariaDB

Utilizaremos el docker-compose.yml disponible en github: https://gitlab.com/Didweb/dockers

Es un repositorio con varios contenedores para distintos entornos. Aunque para este entorno solamente necesitaremos los ubicados en Aplicacion-PHP descargamos todos y los guardamos en nuestro ordenador para tenerlos y poder reutilizarlos. Pulsa sobre el icono de Download ...

Copia los siguientes archivos donde vas a crear tu entorno. Archivos a copiar:

Te a de quedar este aspecto. El directorio Aplicacion-PHP puedes cambiarlo por el nombre de tu proyecto.

Ahora tenemos todo lo necesario para iniciar el entorno.

Vamos a ejecutar comandos en la consola o terminal.

Desde el terminal, tendremos que ubicarnos en el directorio ...

Para Mac y Linux ...

cd /Path/hacia/donde/tenemos/los/archivos

Para Windows (con la barra al revés)...

cd \Path\hacia\donde\tenemos\los\archivos

Para comprobar si estamos en el directorio. Con ls veremos el contenido

Mac, Linux y Windows...

ls

Tendremos que ver algo parecido a esto ...

Como se aprecia estan todo los archivos y directorios de Aplicacion-PHP

Sí e sla primera vez lo construimos y luego lo levantamos, con el siguiente comando...

Construimos (Solo si es la primera vez y no lo tenemos construido)...

docker-compose build

Sí no tenéis la imagen en vuestro ordenador tardará un poco, y vuestra consola parecerá Matrix, cuando termine, lo levantamos ...

docker-compose up -d

Saldrá algo parecido a esto...

Como se puede ver hay levantados 3 contenedores my-app-mariadb (Base de datos), source2_app_1 (PHP + apache) y my-app-phpmyadmin (el PHPMyAdmin)

Si no s vamos a ver la carpeta o bien con tu IDE favorito o por las carpetas, verás que hay 2 directorios nuevos, data y sessions. Son necesarios para la base de datos y el phpMyAdmin, no te preocupes no las vas a necesitar. No los toques.

Ahora de momento solamente tenemos un index.php en en la carpeta html, con la información de la conexión a la base de datos y la configuración de PHP. Para acceder al index de nuestra web, se ha de conocer el puerto por el que es accesible el contenedor para verlos pulsamos en le terminal...

docker ps

Saldrá algo parecido a esto y el puerto sale destacado en la imagen...

Si ampliais la imagen se ve que es el puerto 8080 en el contenedor source4_app_1 que es por donde esta corriendo apache y nuestro PHP.

Ahora abrir el navegador y poner en la barra de direcciones...

http://localhost:8080

Saldará esto ....

Ok!! Ya está funcionando PHP y Apache!!! Lo más seguro es que salga un error al conectar la base de datos. esto es debido a que en este index.php hay una conexión a la base de datos pero los datos están puestos por defecto. Si queremos comprobar que tenemos conexión a la base de datos, corregimos estos datos de conexión...

Abrimos el archivo info.php

Modificaremos las 4 primeras ($host, $usuario, $password, $nameDB) variables por las correctas...

¿ Y dónde están los datos correctos? .... en el archivo .env

Como se puede ver hay un listado con nombres de variables = valores

En este caso se puede ver que $password en el info.php es 123456X y el valor correcto debería ser 123456 ... Nos vamos al archivo info.php y ponemos el password correcto. Ahora vamos de nuevo al navegador actualizamos y saldrá algo así...

Pues ya tenemos un entorno de producción con php + apache + mariadb funcionando!!!

Ahora ya podemos programar, todo el código debe ir en el directorio html

Este index.php lo puedes eliminar o poner otro nombre al archivo y así poder comprobar en otra ocasión que todo está bien.

Si queremos entrar a PhpMyadmin ... primero tenemos que saber en que puerto esta... con docker ps desde la consola. En este caso es 8011 .

Ponemos las credenciales de acceso, recuerda que están en ... .env

Y se puede ver que está nuestra base de datos!

Repasando ...

  1. Abrimos la consola y nos situamos en el directorio.

  2. Si es la primera vez ... docker-composer build

  3. Si no es la primera vez o y has ejecutado el build ... docker-compose up -d

  4. Para saber en qué puerto corre la aplicación... docker ps

  5. Vamos al navegador con el puerto ... http://localhost:8080 cambiar 8080 por el que corresponda.

  6. Ya está.

Podemos cerrar y eliminar los contenedores con ...

docker-compose down

Como se aprecia... los para y luego los elimina. Si te vas a http://localhost:8080 veras qeu esta caida la web. Para levantarla solo hay que hacer ... docker-comspoe up -d

Todo los archivos que hayas modificado en html permanecerán en el la carpeta html, así como la base de datos, seguirá estando en su sitio.

Configurar puertos y claves de Mysql

Si por alguna razón quieres cambiar los puertos, por ejemplo porque tiene varios proyectos y al coincidir los puertos no te deja levantar los contenedores. Simplemente ves al archivo .env y cambia por ejemplo los puertos en PORT_APP o PORT_PHPMYADMIN o PORT_DB.

Cómo crear otros proyectos

Si quieres abrir otro proyecto simplemente tienes que copiar los archivos de Aplicacion-PHP en otra carpeta de un nuevo proyecto y ejecutar el docker-compose build y luego el docker-compose up -d

ATENCIÓN !! Cambio de Nombres y Puertos de contenedores

Al abrir nuevos contenedores en la misma máquina, ten en cuenta que deberás cambiar el nombre y puertos de los contenedores, ya que si hay dos contenedores con el mismo nombre se genera un error.

Para cambiar los nombres antes de levantar el entorno modifica los parámetros del archivo .env ...