Configuración del entorno de desarrollo con Docker
Este es mi segundo artículo sobre Docker. Si no conoces Docker te recomiendo que te leas mi anterior artículo sobre el tema.
En este curso necesitamos un entorno tipo LAMP para desarrollar en PHP, asi que, que mejor manera de hacerlo lo mas parecido a como se hace en el mundo laboral a dia de hoy.
Este verano, mientras jugaba un poco con Laravel, encontré un entorno de desarrollo llamado Laradock.
La verdad es que es genial, te lo dan todo super guisadito. Puedes elegir entre diferentes servidores web (Apache, Nginx..), también puedes elegir entre diferentes gestores de bases de datos (MySQL, MariaDB, Redis, MSSQL….), todos con sus diferentes versiones. Si en determinado proyecto necesitas la version 5.7 de Mysql, pues lo indicas en el fichero de configuración del entorno y al levantar por primera vez, te descarga el contenedor con esa version. Asi de simple.
Hablando de contenedores, la forma en que se despliega el entorno, es en varios contenedores, usando docker compose. Un poco mas adelante veremos los contenedores que nos ha levantado.
Desplegando que es gerundio
Doy por hecho que tienes docker en tu máquina. Sino, y tienes linux, con Snappy estas de suerte. Solo con poner
$>snap install docker
tendrias docker instalado en tu máquina.
DISCLAIMER: La manera en la que vamos a desplegar seguro que no sera la mejor, pero a dia de hoy es la que me ha funcionado. Si encuentro una mejor, te lo compartiré en otro artículo.
Bueno, vamos al turrón. Lo primero, es crear un directorio en donde vayas a hacer el desarrollo. Y desde dentro de el vamos a clonarnos el proyecto de laradock en Github.
https://github.com/Laradock/laradock.git
Una vez terminado el clonado, nos metemos dentro de la carpeta laradock y copiamos el fichero de ejemplo env-example a nuestro fichero de configuración que es .env
Ahora vamos a editar ese fichero .env con nuestro editor favorito.
Lo primero que vamos a indicarle es el directorio donde vamos a hacer el desarrollo, se lo indicamos en APP_CODE_PATH_HOST=../ en mi caso de ejemplo lo voy a llamar WebApp.
Si estás haciendo el despliegue desde windows te recomiendo que cambies el parametro COMPOSE_PATH_SEPARATOR=: y cambies los dos puntos por punto y coma.
Lo siguiente que vamos a hacer es cambiar la ip host de docker, en el parametro DOCKER_HOST_IP= cambiamos la que viene, por 127.0.0.1, así con poner localhost en el navegador, nos sale la aplicación.
En el apartado de MYSQL podemos cambiar tanto la versión de MYSQL como el nombre de la base de datos, el nombre y password del usuario de la base de datos como el password de root. En mi caso, para ir mas rápido lo dejare como está, pero es conveniente cambiarlo.
Y en ese fichero ya tendríamos todo listo. Guardamos cambios y seguimos.
Ahora vamos a modificar el fichero my.cnf para cambiar el plugin de autenticación a utilizar. Lo podemos encontrar dentro de el directorio mysql.
Tenemos que agregar al final del archivo lo siguiente
default_authentication_plugin=mysql_native_password
Guardamos cambios y tendríamos lo mínimo para poder empezar a jugar con PHP.
Levantando por primera vez
Nos posicionamos en en directorio laradock y le decimos a docker compose lo que queremos levantar. En mi caso usare Nginx como servidor web dado que es mas ligero que Apache. También levantaré el contenedor de PhpMyAdmin
$> sudo docker-compose up -d nginx mysql phpmyadmin
Ahora, dependiendo de tu conexion a internet y de tu máquina, tardará mas o menos en hacer la magia docker compose. It’s coffee time
Una vez haya terminado de configurar todo docker, podemos comprobar que esta todo levantado con
$> docker-compose ps
Podemos ver como nos ha levantado un contenedor por cada servicio que le hemos pedido, además del contenedor de workspace que es el orquestador. – Benditos contenedores XD –
Lo siguiente que vamos a hacer es meternos dentro del contenedor de mysql para hacer unos cambios.
$>sudo docker-compose exec mysql bash
una vez estemos dentro del bash del contenedor, vamos a proceder con el comando
$> mysql_secure_installation
para configurar el gestor Mysql.
Una vez tengamos terminado el script, lo siguiente seria meternos en mysql y poner las siguientes sentencias
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
Y con esto ya no tenemos que configurar nada mas.
Para detener los contenedores solo necesitamos meter la instrucción (estando posicionados dentro del directorio laradock)
$>sudo docker-compose down
Y veríamos como se detienen todos los contenedores.
En el siguiente artículo os explicaré como instalar laravel con composer desde el workspace que hemos creado.