Vamos a mostrar como tener un entorno de desarrollo en local con laravel en menos de 5 mínutos.
Para ello vamos a utilizar ddev una pequeña pero potente herramienta que nos permite tener nuestro entorno de desarrollo:
- Servidor encriptado.
- MariaDB.
- Instancia de phpMyAdmin
- Servidor MailHog (Verificación de correos electrónicos).
Vamos a ello.
Instalación de ddev
Bajamos e instalamos ddev.
[code lang="text"]
curl -L https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh | bash
[/code]
Instalación de mkcert
mkcert nos permite tener certificados SSL en local.
[code lang="text"]
wget https://github.com/FiloSottile/mkcert/releases/download/v1.1.2/mkcert-v1.1.2-linux-amd64
mv mkcert-v1.1.2-linux-amd64 mkcert
chmod +x mkcert
sudo cp mkcert /usr/local/bin/
mkcert -install
[/code]
Configuración de proyecto
En caso de tener ya nuestro proyecto en laravel entramos en su carpeta.
[code lang="text"]
ddev config --project-type=laravel --project-name=$PROYECTO --docroot=public
ddev start
[/code]
En caso de iniciar un proyecto desde cero.
[code lang="text"]
ddev config --project-type=laravel --project-name=$PROYECTO --docroot=public --create-docroot
ddev start
ddev composer create --prefer-dist laravel/laravel
ddev composer install
[/code]
Conexión con la base de datos
Si aún no tenemos fichero de configuración .env podemos ejecutar este comando
para hacer la conexión con la base de datos.
[code lang="text"]
ddev exec "cat .env.example | sed -E 's/DB_(HOST|DATABASE|USERNAME|PASSWORD)=(.*)/DB_\1=db/g' > .env"
[/code]
Si lo preferimos podemos hacerlo a mano editando el fichero .env.
[code lang="text"]
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=db
DB_USERNAME=db
DB_PASSWORD=db
[/code]
Puesta en marcha.
[code lang="text"]
chmod +x artisan
ddev exec ./artisan key:generate
ddev exec ./artisan migrate:fresh --seed
[/code]
Depuración co vscode
Instalamos la extensión php-debug en vscode.
Configuración:
[code lang="text"]
{
// Use IntelliSense para saber los atributos posibles.
// Mantenga el puntero para ver las descripciones de los existentes atributos.
// Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"hostname": "0.0.0.0",
"pathMappings": {
"/var/www/html": "${workspaceRoot}"
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
[/code]
ddev describe
[code lang="text"]
NAME TYPE LOCATION URL STATUS
$PROYECTO laravel ~/desarrollo/$PROYECTO https://$PROYECTO.ddev.site running
Project Information
-------------------
PHP version: 7.3
NFS mount enabled: false
Database type: mariadb
MariaDB version: 10.2
URLs
----
https://$PROYECTO.ddev.site
https://127.0.0.1:32773
http://$PROYECTO.ddev.site
http://127.0.0.1:32774
MySQL/MariaDB Credentials
-------------------------
Username: "db", Password: "db", Default database: "db"
or use root credentials when needed: Username: "root", Password: "root"
Database hostname and port INSIDE container: db:3306
To connect to db server inside container or in project settings files:
mysql --host=db --user=db --password=db --database=db
Database hostname and port from HOST: 127.0.0.1:32772
To connect to mysql from your host machine,
mysql --host=127.0.0.1 --port=32772 --user=db --password=db --database=db
Other Services
--------------
MailHog (https): https://$PROYECTO.ddev.site:8026
MailHog: http://$PROYECTO.ddev.site:8025
phpMyAdmin (https): https://$PROYECTO.ddev.site:8037
phpMyAdmin: http://$PROYECTO.ddev.site:8036
DDEV ROUTER STATUS: healthy
ssh-auth status: healthy
[/code]