Laravel Sail Development
When to Apply
Activate this skill when:
- Starting or stopping the Docker environment
- Adding services to Sail (MySQL, Redis, etc.)
- Running commands inside containers
- Debugging container issues
- Configuring Docker services
Documentation
Use search-docs for detailed Laravel Sail patterns and documentation.
Basic Commands
Starting and Stopping
# Start all containers
./vendor/bin/sail up
# Start in background (detached)
./vendor/bin/sail up -d
# Stop containers
./vendor/bin/sail down
# Stop and remove volumes (reset databases)
./vendor/bin/sail down -v
Running Commands
# Run Artisan commands
./vendor/bin/sail artisan migrate
# Run Composer
./vendor/bin/sail composer require package/name
# Run NPM
./vendor/bin/sail npm install
./vendor/bin/sail npm run dev
# Run tests
./vendor/bin/sail test
# Run Tinker
./vendor/bin/sail tinker
Shell Access
# Access application container shell
./vendor/bin/sail shell
# Run command as root
./vendor/bin/sail root-shell
Adding Services
# Add services interactively
php artisan sail:add
# Or specify services
php artisan sail:add mysql redis meilisearch
Available Services
- MySQL 8.0
- PostgreSQL
- MariaDB
- Redis
- Memcached
- Meilisearch
- Typesense
- MinIO
- Mailpit
- Selenium
Configuration
docker-compose.yml
Environment Variables
Database connection
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=sail DB_PASSWORD=password
Redis
REDIS_HOST=redis REDIS_PASSWORD=null REDIS_PORT=6379
Sail Alias
Add to your shell profile for convenience:
# ~/.bashrc or ~/.zshrc
alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'
Then use:
sail up -d
sail artisan migrate
sail npm run dev
Database Access
# MySQL CLI
./vendor/bin/sail mysql
# PostgreSQL CLI
./vendor/bin/sail psql
# Redis CLI
./vendor/bin/sail redis
Debugging
# View container logs
./vendor/bin/sail logs
# View specific service logs
./vendor/bin/sail logs mysql
# Follow logs
./vendor/bin/sail logs -f
Xdebug
Publishing Sail Files
# Publish docker-compose.yml and Dockerfiles
php artisan sail:publish
This allows customizing the Docker configuration.
Common Pitfalls
- Forgetting to start Sail before running commands
- Using
localhostinstead of service names for connections (usemysqlnotlocalhost) - Port conflicts with local services
- Not using
sailprefix for commands (runningphp artisaninstead ofsail artisan) - Volume permission issues (use
sail root-shellto fix) - Forgetting to rebuild after Dockerfile changes (
sail build --no-cache)
