Ya que se ha visto mucho de Laravel 8, veo al inicio de la documentación a Laravel Sail. Ya sabiendo Docker seguí la documentación y me encanto esta nueva librería ❤️.
Laravel Sail es un como un helper que crea un docker-compose con diversos contenedores seleccionables desde la CLI.
Instalación:
- Primeramente necesitas tener docker, docker-compose y composer en el local para instalar Laravel y Laravel Sail.
- Con Laravel instalado ejecutas los siguiente comandos para instalar y generar el docker-compose.
composer require laravel/sail --dev
php artisan sail:install
- Crea un alias para poder ejecutar los comandos de manera mas sencilla.
alias sail='bash vendor/bin/sail
- Ahora corres los contenedores, esperas a que se descarguen las imágenes y se ejecuten.
sail up
Y listo, ya tienes todo el ambiente instalado y corriendo.
Respecto a este punto te puedo explicar que en el docker-compose obtiene tus credenciales del archivo de configuracion .env.
// docker-compose.yml
mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
// .env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Y en cuanto a la comunicación entre los contenedores, estos se conectan mediante una red definida en el mismo docker-compose, y además los contenedores exponen puertos que se vinculan a puertos de nuestro local. Mientras que nuestro proyecto de laravel se vincula como volumen en el contendor principal en la raiz /var/www/html.
// vinculación del puerto con nuestra app al puerto 80
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
// vinculación de toda nuestra app a la ruta del servidor
volumes:
- '.:/var/www/html'
// la red en la que se conectara el contenedor y pueda comunicarse con los demás.
networks:
- sail
En cuanto a la ejecución de comandos puedes ejecutar comandos de php (para comandos de artisan) y docker-compose como sail, por ejemplo en vez de php artisan migrate, ejecuta sail artisan migrate, o docker-compose up -d ejecuta sail up -d. Mientras que los comandos de composer, y npm solo escribes al inicio sail y listo, por ejemplo sail npm install.
Hay diversos comandos de docker-compose que necesitarás, pero antes de decirte unos te recomiendo ver el nuevo Curso de Docker, donde aprenderás los fundamentos acerca de los contenedores, sobre docker y docker-compose.
Comandos básicos de docker-compose:
- docker-compose ps | sail ps : ver los contenedores en ejecución.
- docker-compose down | sail down : Parar los contenedores y eliminarlos.
- docker-compose up | sail up: Correr los contenedores, aquí mismo te va mostrando los logs de todos los contenedores.
- docker-compose up -d | sail up -d: Correr los contenedores en modo background.
Curso de Single Page Applications en Laravel con Inertia y Vue.js