Este proyecto está basado en dos contenedores, uno de base de datos y uno de apache y php (ver el archivo docker-compose.yml). La aplicación como tal se encuentra en las carpetas back y front, que se mapean a volúmenes dentro del contenedor de apache.
cp .env.example .env
docker-compose upDebido a que docker necesita un kernel de Linux o Unix para funcionar, en windows es necesario utilizar una máquina virtual. Afortunadamente el Docker Toolbox facilita esto.
Para iniciar la máquina
docker-machine start
# y detenerla
docker-machine stopPara conectarse a la máquina
docker-machine sshPara conocer la ip local de la máquina
docker-machine ipEn este caso los puertos de docker serán relativos a esta ip.
Para configurar los volúmenes (carpetas compartidas) también nos toca hacer algo más de trabajo. El truco es especificar la ruta correcta como se ve dentro de la máquina virtual en el archivo .env mencionado en la sección anterior. Por defecto la máquina mapea
C:\Users -> /c/Users
Si la carpeta del proyecto está bajo C:\Users basta con colocar un guión al inicio de la ruta y enderezar todos los guiones, por ejemplo
C:\Users\Ana\chevere\code_retreat\tetris\front -> /c/Users/Ana/chevere/code_retreat/tetris/front
Si la carpeta se encuentra en otra ruta, debemos crear una nueva carpeta compartida en VirtualBox. Para verificar la ruta se puede acceder por ssh a la máquina.
# revisar el nombre del contenedor
docker ps
# reemplazar el penúltimo argumento por el nombre del contenedor
docker exec -it tetris_apache_1 bash
# Lo anterior abre una consola dentro del contenedor
cd /var/www/back
composer install
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrateDentro del navegador coloque la url:
Para Mac o Linux:
Para Windows utilizar la ip de la máquina virtual
Desde la consola al interior del contenedor (ver arriba)
# correr pruebas de unidad
php bin/phpunit
# reiniciar la base de datos
php bin/console doctrine:database:drop
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrateNOTA: El proyecto tiene instalada la libreria Doctrine Test Bundle que corre todas las pruebas dentro de una transacción y hace roll back al final; por lo tanto no es necesario preocuparse por reinicializar la base de datos en las pruebas de unidad.