Entorno de desarrollo laravel en 5m con ddev

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.

curl -L https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh | bash

Instalación de mkcert

mkcert nos permite tener certificados SSL en local.

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

Configuración de proyecto

En caso de tener ya nuestro proyecto en laravel entramos en su carpeta.

ddev config --project-type=laravel --project-name=$PROYECTO --docroot=public
ddev start

En caso de iniciar un proyecto desde cero.

ddev config --project-type=laravel --project-name=$PROYECTO --docroot=public --create-docroot
ddev start
ddev composer create --prefer-dist laravel/laravel
ddev composer install

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.

ddev exec "cat .env.example | sed  -E 's/DB_(HOST|DATABASE|USERNAME|PASSWORD)=(.*)/DB_\1=db/g' > .env"

Si lo preferimos podemos hacerlo a mano editando el fichero .env.

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=db
DB_USERNAME=db
DB_PASSWORD=db

Puesta en marcha.

chmod +x artisan
ddev exec ./artisan key:generate
ddev exec ./artisan migrate:fresh --seed

Depuración co vscode

Instalamos la extensión php-debug en vscode.

Configuración:

{
    // 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
        }
    ]
}

ddev describe

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.