Laravel Sail

 Laravel Sail was released on december 8 2020 by Tailor Otwell. It is a lightweight command line interface for communicating with Laravel’s Docker development environment. You can start a Laravel application without prior Docker experience using Sail. Sail’s core is a docker-compose.yml file and sail script in the root of your project. Linux, Windows and MacOS support Sail. To add Sail to your existing Laravel application you will need to require the Sail package in composer. 

composer require laravel/sail --dev

Then run the install command given below.

php artisan sail:install

Then publish the env config file using the following command.

php artisan sail:publish

To add Laravel Sail to your existing project add a docker -compose.yml file to the root of the project.

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
            # - selenium
    # selenium:
    #     image: 'selenium/standalone-chrome'
    #     volumes:
    #         - '/dev/shm:/dev/shm'
    #     networks:
    #         - sail
    #     depends_on:
    #         - laravel.test
    mysql:
        image: 'mysql:8.0'
        ports:
            - '${DB_PORT}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
    redis:
        image: 'redis:alpine'
        ports:
            - '${REDIS_PORT}:6379'
        volumes:
            - 'sailredis:/data'
        networks:
            - sail
    # memcached:
    #     image: 'memcached:alpine'
    #     ports:
    #         - '11211:11211'
    #     networks:
    #         - sail
    mailhog:
        image: 'mailhog/mailhog:latest'
        ports:
            - 1025:1025
            - 8025:8025
        networks:
            - sail
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local
    sailredis:
        driver: local

In the .env file you need to make some changes.

DB_HOST=mysql

QUEUE_CONNECTION=database

MEMCACHED_HOST=memcached

REDIS_HOST=redis

MAIL_HOST=mailhog
MAIL_PORT=1025

Finally, the composer requires laravel/sail --dev. Once the installation process is complete you will be able to run vendor/bin/sail up to build and run the Sail containers.