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:
composer require laravel/sail --dev
php artisan sail:install
aliassail='bash vendor/bin/sail
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.ymlmysql:
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 80ports:
- '${APP_PORT:-80}:80'environment:
WWWUSER: '${WWWUSER}'LARAVEL_SAIL: 1// vinculación de toda nuestra app a la ruta del servidorvolumes:
- '.:/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: