Laravel Sail và Docker: Môi Trường Dev Không Cần Cấu Hình
Thiết lập PHP, Nginx, MySQL, Redis, và Mailpit trên máy local có thể rất tẻ nhạt. Docker giải quyết vấn đề này, và Laravel Sail làm cho Docker trở nên liền mạch với các lập trình viên Laravel.
Sail Là Gì?
Sail là một giao diện command-line nhẹ để tương tác với môi trường phát triển Docker mặc định của Laravel. Nó cung cấp một file docker-compose.yml và một script helper sail.
Cài Đặt
Nếu bạn đang tạo dự án mới:
curl -s "https://laravel.build/example-app" | bash
Với các dự án đã có:
composer require laravel/sail --dev
php artisan sail:install
Lệnh này sẽ hỏi bạn cần những services nào (MySQL, Redis, v.v.) và tạo file docker-compose.yml.
Sử Dụng Cơ Bản
Khởi động môi trường:
./vendor/bin/sail up
Hoặc chạy trong nền (detached mode):
./vendor/bin/sail up -d
Dừng môi trường:
./vendor/bin/sail stop
Chạy Các Lệnh
Thay vì chạy php, composer, hoặc npm trên máy local, hãy chạy chúng qua Sail (bên trong container):
# Artisan
./vendor/bin/sail artisan migrate
# Composer
./vendor/bin/sail composer require some/package
# NPM
./vendor/bin/sail npm install
./vendor/bin/sail npm run dev
Cấu Hình Alias
Gõ ./vendor/bin/sail rất phiền. Thêm alias này vào shell profile (~/.zshrc hoặc ~/.bashrc):
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
Bây giờ bạn chỉ cần gõ:
sail up
sail artisan migrate
Tùy Chỉnh
File nền tảng chỉ là một docker-compose.yml tiêu chuẩn. Bạn có thể mở nó và sửa đổi versions, thêm services (như MinIO hoặc Meilisearch), hoặc thay đổi ports.
Nếu bạn cần tùy chỉnh nhiều hơn (ví dụ: PHP extensions tùy chỉnh), bạn có thể publish các Dockerfiles:
sail artisan sail:publish
Điều này đặt các Dockerfiles vào ./docker nơi bạn có thể chỉnh sửa tự do.
Ưu Điểm
- Nhất Quán: Mọi người trong team chạy cùng một phiên bản PHP/Database.
- Cô Lập: Các dependencies chi tiết của dự án không làm lộn xộn OS chính của bạn.
- Nhanh Chóng: Khởi động một full stack trong vài giây.
Sail là tiêu chuẩn cho phát triển local Laravel hiện đại.