Laravel Sail, một môi trường phát triển cho Laravel sử dụng Docker, phụ thuộc rất nhiều vào các biến môi trường được xác định chủ yếu trong tệp `.env` ở gốc của dự án. Các biến môi trường này cấu hình ứng dụng và các dịch vụ của nó, cho phép điều phối các container và điều chỉnh các cài đặt phù hợp để phát triển cục bộ.
Các biến môi trường phổ biến được sử dụng trong Laravel Sail có thể được nhóm theo mục đích của chúng: cấu hình ứng dụng, cấu hình cơ sở dữ liệu, cổng dịch vụ và ràng buộc, cài đặt người dùng container và các tùy chỉnh cụ thể của SAIL.
Biến cấu hình ứng dụng
- `app_name`: Xác định tên của ứng dụng Laravel.
- `app_env`: Đặt loại môi trường, thường là` local` cho buồm.
- `app_key`: Khóa mã hóa được mã hóa cơ sở64 được sử dụng bởi Laravel để mã hóa và bảo mật phiên.
- `app_debug`: một lá cờ boolean để bật các thông báo lỗi chi tiết và các tính năng gỡ lỗi (` true` hoặc `false ').
- `app_url`: URL nơi ứng dụng có thể truy cập cục bộ, thường được đặt thành` http: // localhost`.
Các biến kết nối cơ sở dữ liệu
Để phối hợp container cơ sở dữ liệu (dịch vụ `mysql`), SAIL sử dụng các biến xác định kết nối với thùng chứa cơ sở dữ liệu MySQL:
- `db_connection`: Cho biết trình điều khiển cơ sở dữ liệu, thường là` mysql`.
- `db_host`: Tên máy chủ cho máy chủ cơ sở dữ liệu, thường là tên của thùng chứa MySQL, chẳng hạn như` mysql`.
- `db_port`: cổng mặc định cho kết nối MySQL, thường là` 3306`.
- `db_database`: Tên của cơ sở dữ liệu đang được sử dụng bên trong container.
- `db_username`: Tên người dùng để truy cập cơ sở dữ liệu.
- `db_password`: Mật khẩu cho người dùng cơ sở dữ liệu.
Cấu hình Redis
SAIL tùy chọn hỗ trợ Redis để lưu trữ hoặc xử lý phiên. Các biến này cấu hình kết nối redis:
- `redis_host`: tên máy chủ cho máy chủ redis, thường là` redis` để phù hợp với container redis.
- `redis_password`: mật khẩu cho redis, nếu có.
- `redis_port`: cổng redis lắng nghe, thường là` 6379`.
Các biến chuyển tiếp cổng dịch vụ
Để tránh xung đột với các dịch vụ đã chạy trên các cổng chung trên hệ thống máy chủ, SAIL cho phép tùy chỉnh các cổng được chuyển tiếp cho các dịch vụ của mình:
- `forward_db_port`: Cổng máy cục bộ được chuyển tiếp đến cổng tiêu chuẩn 3306 của MySQL trong container (ví dụ: bạn có thể đặt cái này nếu cổng 3306 bị chiếm).
- `forward_redis_port`: cổng cục bộ được chuyển tiếp đến cổng mặc định Redis 6379.
- `forward_mailhog_port`: Cổng địa phương được chuyển tiếp đến cổng dịch vụ MailHog, thường được sử dụng để kiểm tra email.
- Các biến khác `forward_*` tồn tại cho các dịch vụ như phpmyadmin hoặc các dịch vụ buồm khác nếu được cấu hình.
Biến người dùng và quyền của người dùng container
SAIL chạy các container bằng cách sử dụng người dùng phù hợp với người dùng máy chủ cục bộ để đảm bảo rằng các quyền của tệp vẫn phù hợp giữa máy chủ và container. Các biến này kiểm soát ID người dùng:
- `wwwuser`: Đặt ID người dùng bên trong thùng chứa tương ứng với ID người dùng của máy chủ, đảm bảo quyền của tệp khớp.
- `wwwgroup`: Đặt ID nhóm bên trong container để khớp với máy chủ.
Biến tùy chỉnh buồm
- `app_service`: Cho phép thay đổi tên container dịch vụ ứng dụng chính của Laravel bên trong` Docker-compose.yml`. Điều này có thể hữu ích cho các cấu hình nâng cao.
- `SAIL_FILES`: Cho phép bạn chỉ định thêm Docker Compose Các tệp ghi đè sẽ được tải cùng với các tệp SAID tiêu chuẩn. Đây là để tùy chỉnh hoặc mở rộng môi trường buồm.
- `Giám sát_php_command`: Được sử dụng để tùy chỉnh lệnh khởi động PHP bên trong thùng chứa chính của Laravel, hữu ích khi tích hợp các công cụ như Laravel Octane.
- `Giám sát_php_user`: Đặt người dùng chạy PHP trong quy trình giám sát bên trong container.
Biến dịch vụ thư
Laravel Sail đi kèm với một container MailHog để ghi lại các email được gửi trong quá trình phát triển. Các biến này định cấu hình cài đặt thư:
- `mail_mailer`: đặt thành` smtp` hoặc trình điều khiển thư khác.
- `mail_host`: tên máy chủ cho máy chủ thư, thường là` mailhog`.
- `mail_port`: cổng cho smtp, thường là` 1025` cho mailhog.
- `mail_username` và` mail_password`: thông tin đăng nhập nếu cần (thường để trống trong phát triển).
Trình điều khiển hàng đợi và bộ nhớ cache
Mặc định của Sail `.Env` có thể đặt những điều này:
- `Queue_connection`: Xác định trình điều khiển hàng đợi, như` sync`, `cơ sở dữ liệu` hoặc` redis`.
- `cache_driver`: xác định trình điều khiển bộ đệm, thường là` file` hoặc `redis`.
Biến môi trường dịch vụ khác
- `xdebug_config`: Được cấu hình tự động bằng cách gỡ lỗi với XDebug, thường đặt` client_host = host.docker.Iternal` cho mac và windows.
- `puid` và` pgid`: Thỉnh thoảng được nhìn thấy trong các cấu hình buồm tùy chỉnh để đặt rõ ràng ID người dùng và ID nhóm để phù hợp với người dùng.
Tóm tắt các vai trò biến đổi môi trường trong SAIL
Các biến môi trường này, chủ yếu được xác định trong tệp `.env`, phục vụ cho:
- Định cấu hình các điều cơ bản của ứng dụng Laravel (tên, môi trường, chế độ gỡ lỗi, URL).
- Kết nối bộ chứa ứng dụng Laravel với cơ sở dữ liệu và dịch vụ bộ đệm bên trong Docker.
- Bản đồ các cổng từ container đến máy chủ, tránh xung đột cổng cục bộ.
- Đảm bảo quyền của người dùng và nhóm phù hợp giữa các hệ thống máy chủ và container.
- Tùy chỉnh các container và quy trình môi trường buồm Laravel cho việc sử dụng nâng cao.
Các biến môi trường tệp `.env` trực tiếp kiểm soát hành vi của các container được xác định trong` docker-compose.yml` và bất kỳ tệp tổng hợp mở rộng nào được chỉ định bởi `SAIL_FILES`. Điều chỉnh các biến này và khởi động lại SAIL (sử dụng các lệnh như `./vendor/bin/sail Down` và`.
Thiết lập này cho phép Laravel Sail cung cấp một môi trường phát triển cục bộ, nhưng có thể định cấu hình bằng cách sử dụng Docker, phản ánh hành vi sản xuất bất cứ nơi nào thực tế trong khi duy trì sự thuận tiện và linh hoạt của nhà phát triển.