Primero creamos un proyecto de Laravel
composer create-project laravel/laravel sail-mysql
Y una vez creado instalamos Laravel Sail pero sin instalar MySqlphp artisan sail:install
Hay que deschequearloYa tenemos instalado Laravel sail y ahora vamos a configurar MySql
Lo primero buscamos el servidor de MySql que tenemos instalado. Si no tenéis ninguno aquí hay un artículo donde lo explico Un contenedor docker MySql para todos los proyectos web
Ahora miramos la IP del contenedor de MySql, con
docker ps
buscamos el id del contenedor y inspectdocker inspect 53e792b7709e | grep IPA
Ahora también tenemos que buscar la red de MySql, red a la que se conectara nuestro proyecto de Laravel. Para buscar la red ejecutamos
docker network ls
Ya tenemos la IP del servidor de MySql 172.18.0.2 y el nombre de la red mysql_net_mysql, el nombre de la red se forma con el nombre del directorio donde tengais el proyecto de MySql y el nombre que le hayáis dado a la red en el docker-compose.yml.
Con estos datos vamos a modificar el fichero .env del proyecto de Laravel sail y el docker-compose.yml
En el fichero .env ponemos los datos de acceso a la base de datos
DB_CONNECTION=mysql
DB_HOST=172.18.0.2
DB_PORT=3306
DB_DATABASE=pruebas
DB_USERNAME=root
DB_PASSWORD=root
Hecho esto solo queda probarlo y para eso entramos dentro del contenedor de sail ejecutando el shell
sail shell
Recordar arrancarlo si lo teníais parado sail up -ddentro ejecutamos tinker para tener acceso la consola de laravel
php artisan tinker
y una vez en la consola probamos la conexiónDB::connection()->getPDO();
Y si funciona bien la conexión mostrará los datos de conexiónEsta prueba tambien se puede hacer desde fuera del contenedor para comprobar que tambien funciona bien la conexión al MySql y desde Workbench se puede acceder a administrarlo.
Dejo dos enlaces para el que quiere modificar Laravel sail y tener un Dockerfile personalizado y poder, por ejemplo, instalar Apache2 o Nginx: Laravel sail configurar multidominio con Apache
Y el artículo para crear solo el contenedor del servidro MySql: Un contenedor docker MySql para todos los proyectos web
Y esto es todo, feliz programming
Saludos
Alex
/ :-)