Crear un projecte Laravel des de zero, amb Docker

S’assumeix que tenim un entorn local amb Docker funcionant. I que volem instal·lar a una versió nova de Laravel. Les versions actuals de Laravel ja incorporen Sail, que serveix per treballar amb Docker.

Instal·lar Laravel

Utilitzarem LARAVEL Cli via Docker. El que farem és aixecar un contenidor de PHP amb Composer, instal·lar la CLI de Laravel en memòria i llançar el procés interactiu:

docker run --rm -it \
  -u "$(id -u):$(id -g)" \
  -v "$(pwd):/app" \
  -w /app \
  composer:latest \
  sh -c "composer global require laravel/installer && export COMPOSER_IGNORE_PLATFORM_REQ=1 && /tmp/vendor/bin/laravel new el-meu-projecte"

Pujar al repositori remot

Abans de res, anar al servei en línia de Git (GitLab en aquest cas) i crear un nou projecte, sense arxiu README.md.

Llavors, en local, inicialitzar el repositori i fer el primer commit:

cd el-meu-projecte
git init
git add .
git commit -m "Init commit"

Enllaçar amb el GitLab creat abans (substituir la URL per la d’SSH o HTTPS). La última comanda demanarà usuari (mail) i contrasenya per autenticar-se (tenir-ho a mà!). Per procedir, executem:

git remote add origin https://gitlab.com/el-teu-usuari/el-meu-projecte.git
git branch -M main
git push -u origin main

Entorn local

Obrir C:\Windows\System32\drivers\etc\hosts i afegir la url local a la que volem accedir via navegador mentre desenvolupem en local:

127.0.0.1   projecte-nou.local

Editar l’arxiu .env tenint en compte de posar un port que no estiguem fent servir en una altra aplicació:

APP_URL=projecte-nou.local:8086
APP_PORT=8086

DB config

Editar l’arxiu .env amb els valors:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=projecte_nou
DB_USERNAME=sail
DB_PASSWORD=secret
FORWARD_DB_PORT=3306

Vite config

Editar l’arxiu vite.config.js en l’apartat server:

server: {
    host: '0.0.0.0', 
    port: 5174,
    // evita que Vite intenti canviar de port si està ocupat (millor que peti)
    strictPort: true,
    cors: {
        origin: '*',
        methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
        allowedHeaders: ['X-Requested-With', 'content-type', 'Authorization'],
    },        
    hmr: {
        host: 'localhost',
    },
    watch: {
        ignored: ['**/storage/framework/views/**'],
    },
},

Instal·lar Sail

Si no s’ha generat el fitxer docker-compose.yml (o compose.yaml), executem:

docker run --rm -it \
  -u "$(id -u):$(id -g)" \
  -v "$(pwd):/var/www/html" \
  -w /var/www/html \
  composer:latest \
  php artisan sail:install

Aquest procés pot trigar una estona… llavors aixequem el contenidor amb sail up -d. El primer cop instal·la les imatges, i pot durar una estona...

Instal·lar NPM

Executar sail npm install.

Dev Container

Crear la carpeta .devcontainer a l’arrel del projecte i, a dins, el fitxer devcontainer.json amb aquest contingut:

{
    "name": "Nom del Projecte",
    "dockerComposeFile": [
        "../docker-compose.yml"
    ],
    "service": "laravel.test",
    "workspaceFolder": "/var/www/html",
    "customizations": {
        "vscode": {
            "extensions": [
                "bmewburn.vscode-intelephense-client",
                "onecentlin.laravel-blade",
                "amiralizadeh9480.laravel-extra-intellisense",
                "shufo.vscode-blade-formatter",
                "stefandevai.elixir-linter",
                "editorconfig.editorconfig"
            ],
            "settings": {
                "php.validate.executablePath": "/usr/bin/php",
                "files.associations": {
                    "*.blade.php": "blade"
                }
            }
        }
    },
    "remoteUser": "sail",
    "postCreateCommand": "chown -R sail:sail /var/www/html"
}

Així VS Code demanarà obrir el projecte dins el contenidor i pot validar errors de PHP, reconèixer classes, etc.

Executar la migració de la DB

Fer la primera migració amb les dades per defecte que crea Laravel, amb la comanda: sail artisan migrate

Comentaris