What is Laravel Sail, and how to use it?

Razet · · 10539 Views
What is Laravel Sail, and how to use it?

Laravel Sail is a light-weight command-line interface for communicating with Laravel's default Docker development environment. This means you won't have to utilize Docker to make different containers manually, yet you can simply use Laravel Sail to do that for you.

By using Laravel Sail and you will get a completely working local development environment.

Laravel Sail utilizes the docker-compose.yml file and the sail script that stored in the vendor folder of your project at vendor/bin/sail. The sail script gives a CLI with convenient methods for communicating with the Docker containers defined by the docker-compose.yml file. 

In this post, you will learn how to install and begin with Laravel Sail.


To begin with Laravel Sail, all that you require is to have Docker and Docker Compose installed on your system.

Installing & Setting Up Laravel Sail

The fasted approach to begin with Laravel Sail is running the following command after you have Docker installed:

curl -s https://laravel.build/my-app | bash

This will install a new Laravel application in a my-app directory. Note that you can change the my-app with the name of the directory that you might want to use.

New installations of Laravel will automatically include a vendor/bin/sail CLI script you can use to start, stop, and deal with your Laravel application in an easy-to-use Docker environment.

So, to make life simpler, how about we configure the Bash alias that permits us to execute Sail's commands quicker.

alias sail='bash vendor/bin/sail'

What this does, it sets sail to point to the vendor/bin/sail script, so that you can execute sail commands without having to type vendor/bin every time.

Laravel Sail Commands

One important thing to remember is that before starting it, ensure that no other web servers or databases are not running on your system.

Run the following command on the terminal to start Docker containers:

# Run docker containers `docker-compose up` 
sail up

This will begin pulling the required Docker images, and it will set up a full development environment on your machine.

Something else that you could do is to start the Docker containers in the background by adding -d (-d stands for detached) after the up command. 

# Run docker containers in the background 
# `docker-compose up -d`
sail up -d

Note: If you run this at first, it will require some time to get everything prepared. After that, it should be a lot faster.

Once you've run the sail up command, you can visit your server IP address or localhost if you are running it on your local system, and you will see a fresh new Laravel installation.

If you want to stop the running containers, run the following command on the terminal:

# Stop containers and remove containers, networks, etc. 
sail down

Sail comes with NPM, composer, and all the tools you're used to using locally, all packaged up neatly inside Docker containers. Here are a few examples you'd commonly use:

# Runs php artisan queue:work in the container
sail artisan queue:work

# Run PHP CLI commands and return output
sail php --version

# Require a composer package
sail composer require laravel/sanctum

# Node and NPM
sail node --version
sail npm install

To get started, check out the official Laravel Sail documentation!

Taylor also did a live stream demonstrating Laravel Sail and gives some background on the project:


  1. https://devdojo.com/bobbyiliev/what-is-laravel-sail-and-how-to-get-started


Please login or create new account to add your comment.

1 comment
You may also like:

Part #3: Rule objects based custom validation in Laravel

Laravel comes with multiple ways to add custom validation rules to validate form request inputs. I have already explained some of the ways in the following article links:
Harish Kumar

Part #2: How to use Laravel's Validator::extend method for custom validation

Validation is important in any application as it validates a form before performing actions on it. It allows the user to know their input is accurate and confident about the operation (...)
Harish Kumar

Part #1: Closure-based Custom Laravel Validation

While I was working with Laravel, validation using closure came to my mind, and I know it will be helpful to you. This tutorial assists you with all what is the difference between (...)
Harish Kumar

How to use the enumerations(Enums) of PHP 8.1 in Laravel?

The release of PHP 8.1 brings native enumerations to PHP. There is no more requirement for custom solutions in your Laravel projects since the Laravel v8.69 release has you back. (...)
Harish Kumar

Mobile App Development Process

With businesses adopting a mobile-first approach and the growing number of mobile apps, successful mobile app development seems like a quest. But it’s the process that determines (...)
Narola Infotech

What are Laravel Macros and How to Extending Laravel’s Core Classes using Macros with example?

Laravel Macros are a great way of expanding Laravel's core macroable classes and add additional functionality needed for your application. In simple word, Laravel Macro is an (...)
Harish Kumar