Antes de meternos a Laravel Sail hay que tener claros unos conceptos básicos para poder trabajar y evitar confusiones.
Aquí un video donde intento explicar de que tratan estas tecnologías: https://www.youtube.com/embed/ZbMuZzExRUk
¿Qué es WSL?
El subsistema de Windows para Linux permite a los desarrolladores ejecutar un entorno Linux directamente en Windows sin modificaciones, sin la sobrecarga de una máquina virtual o la instalación de un arranque dual.
Tu puedes:
- Instalar tu distro favorita desde la App Store de Microsoft.
- Correr comandos como grep, sed, awk, etc.
- Correr scripts shell y correr aplicaciones de línea de comandos como:
- Herramientas: vim, emacs, tmux.
- Languages: NodeJS, Javascript, Python, Ruby, C/C++, C# & F#, Rust, Go, etc.
- Servicios: SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL.
- Instalar software adicional usando el administrador de paquetes de tu distribución: apt, yum, packman, etc.
- Invocar aplicaciones Windows usando un shell de línea de comandos similar a Unix.
- Invocar aplicaciones Linux en Windows.
¿Qué es WSL2?
Es la nueva versión del subsistema de Windows para Linux. Su objetivo principal es aumentar el rendimiento del sistema de archivos (para que las aplicaciones sean más rápidas), así como agregar compatibilidad total con las llamadas al sistema.
Esta nueva arquitectura cambia la forma en que estos binarios interactúan con Windows y el hardware de tu computadora pero todavía brinda la misma experiencia de usuario que WSL 1.
Contenedores Linux
Los contenedores de Linux son tecnologías que te permiten empaquetar y aislar las aplicaciones junto con todo el entorno de tiempo de ejecución, es decir, con todos los archivos que requieren para ejecutarse. Esto permite mover la aplicación que se encuentra dentro del contenedor entre los entornos (de desarrollo, de prueba, de producción, etc.), sin perder ninguna de sus funciones.
De RedHat
¿Por qué conviene usar contenedores?
Los contenedores de Linux reducen los conflictos entre los equipos de desarrollo y operaciones, ya que dividen las áreas de responsabilidad. Los desarrolladores se concentran en sus aplicaciones, y el equipo de operaciones se ocupa de la infraestructura.
¿Qué es Docker?
Docker es un proyecto open-source para automatizar la implementación de aplicaciones como contenedores portátiles y autosuficientes que pueden ejecutarse en la nube o en cualquier computadora tuya o de tu organización.
- Docker es una tecnología de creación de contenedores que te permite crear y usar contenedores de Linux.
- La comunidad open source de Docker trabaja para mejorar estas tecnologías para beneficiar a todos los usuarios de forma gratuita.
- La empresa Docker Inc, desarrolla el trabajo de la comunidad Docker, lo hace más seguro y comparte los avances con el resto de la comunidad. También respalda las tecnologías mejoradas y reforzadas para los clientes empresariales.
Docker Desktop para Windows.
La instalación de Docker Desktop incluye:
- Docker engine.
- Docker CLI client.
- Docker Compose.
- Notary.
- Kubernetes.
- Credential Helper.
Docker Compose
Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Compose usa archivos YAML para configurar los servicios de tu aplicación, después con un solo comando puedes crear e iniciar todos los servicios de tu configuración.
Usar Docker Compose es básicamente un proceso de tres pasos:
- Definir el entorno de tu aplicación con un * Dockerfile para que pueda reproducirse en cualquier lugar.
- Definir los servicios que componen tu aplicación en docker-compose.yml para que puedan ejecutarse juntos en un entorno aislado.
- Ejecute docker compose up y el comando Docker compose se inicia y ejecuta toda tu aplicación.
##¿Qué es Laravel Sail?
Laravel Sail es una interfaz de línea de comandos liviana para interactuar con el entorno de desarrollo Docker de Laravel. Proporciona un excelente punto de partida para crear una aplicación Laravel usando PHP, MySQL y Redis sin requerir experiencia previa en Docker. Sail en esencia es un archivo docker-compose.yml y el script sail que se almacena en la raíz de tu proyecto. El archivo docker-compose.yml define una variedad de contenedores de Docker.
Sail es automáticamente instalado con todas las aplicaciones nuevas de Laravel.
Al crear una nueva aplicación Laravel a través de Sail, puedes elegir qué servicios deben configurarse en el archivo docker-compose.yml de tu nueva aplicación.
Ejemplo:
curl -s "https://laravel.build/example-app?with=mysql,redis" | bash
En el ejemplo anterior se va a instalar mysql y redis, si no especificas qué servicios quieres por default se instala el siguiente stack: mysql, redis, meilisearch, mailhog y selenium.
Para las proximás extregas vamos a instalar WSL2 y Docker Desktop.
Gracias por leer.