Laravel Sail, środowisko programistyczne dla Laravel za pomocą Dockera, w dużej mierze opiera się na zmiennych środowiskowych zdefiniowanych przede wszystkim w pliku „.env` u podstaw projektu. Te zmienne środowiskowe konfigurują aplikację i jej usługi, umożliwiając płynną orkiestrację kontenerów i strojenie ustawień odpowiednich do rozwoju lokalnego.
Wspólne zmienne środowiskowe stosowane w Laravel Sail można pogrupować zgodnie z ich celem: konfiguracja aplikacji, konfiguracja bazy danych, porty usług i powiązania, ustawienia użytkowników kontenerów i dostosowania specyficzne dla żagla.
Zmienne konfiguracji aplikacji
- `App_name`: Definiuje nazwę aplikacji Laravel.
- `app_env`: Ustawia typ środowiska, powszechnie„ lokalny ”dla żagli.
- `App_Key`: Klucz szyfrowania Base64 używany przez Laravel do szyfrowania i bezpieczeństwa sesji.
- `App_debug`: Flaga booletowa, aby włączyć szczegółowe komunikaty o błędach i funkcje debugowania (` true` lub `false`).
- `App_Url`: URL, w którym aplikacja jest dostępna lokalnie, często ustawiona na` http: // localHost`.
Zmienne połączenia bazy danych
Aby zorganizować kontener bazy danych (usługa MySQL`), Sail używa zmiennych, które definiują połączenie z kontenerem bazy danych MySQL:
- `db_connection`: Wskazuje sterownik bazy danych, zwykle` MySQL`.
- `db_host`: nazwa hosta dla serwera bazy danych, zwykle nazwa kontenera MySQL, takiej jak` MySQL`.
- `db_port`: domyślny port dla łączności MySQL, zwykle` 3306`.
- `db_database`: Nazwa bazy danych używanej wewnątrz kontenera.
- `db_username`: Nazwa użytkownika dostęp do bazy danych.
- `db_password`: Hasło dla użytkownika bazy danych.
Konfiguracja Redis
Żagiel opcjonalnie obsługuje Redis do buforowania lub obsługi sesji. Te zmienne konfigurują łączność Redis:
- `Redis_host`: nazwa hosta dla serwera Redis, często„ redis ”, aby dopasować kontener Redis.
- `Redis_Password`: Hasło dla Redis, jeśli istnieje.
- `Redis_port`: Port Redis słucha, często` 6379`.
Zmienne przekazywania portu serwisowego
Aby uniknąć konfliktów z usługami już działającymi na wspólnych portach w systemie hosta, Sail umożliwia dostosowanie przekazanych portów do swoich usług:
- `Forward_db_port`: Port maszyny lokalnej przekazany do standardowego portu 3306 MySQL w kontenerze (np. Możesz to ustawić, jeśli port 3306 jest zajęty).
- `Forward_redis_port`: Port lokalny przekazany do Redis domyślnego portu 6379.
- `Forward_mailhog_port`: Port lokalny przekazany do portu serwisowego MailHog, zwykle używanego do testowania e -mail.
- Inne `` Forward_*`Istnieją usługi takie jak PhpMyAdmin lub inne usługi żeglarskie, jeśli są skonfigurowane.
Zmienne użytkownika i uprawnienia kontenera
Sail uruchamia kontenery za pomocą użytkownika, który pasuje do lokalnego użytkownika hosta, aby upewnić się, że uprawnienia do plików pozostają spójne między hostem a kontenerem. Te zmienne kontrolują identyfikatory użytkowników:
- `wwwuser`: Ustawia identyfikator użytkownika wewnątrz kontenera, który odpowiada identyfikatorowi użytkownika komputera hosta, zapewniając dopasowanie uprawnień do plików.
- `wwwgroup`: Ustawia identyfikator grupy wewnątrz kontenera, aby pasował do hosta.
zmienne dostosowywania żagla
- `App_service`: Umożliwia zmianę głównej nazwy kontenera serwisowego aplikacji Laravel wewnątrz„ Docker-Compose.yml`. Może to być przydatne w przypadku konfiguracji zaawansowanych.
- `Sail_files`: pozwala określić dodatkowe komponowanie plików zastępowania, które mają być załadowane obok standardowych plików Sail. Służy to do dostosowania lub rozszerzenia środowiska żagla.
- `Supervisor_php_command`: Używany do dostosowania polecenia uruchamiania PHP wewnątrz głównego kontenera żagla Laravel, przydatne podczas integracji narzędzi takich jak Laravel Octane.
- `Supervisor_php_user`: Ustawia użytkownika, który uruchamia PHP w procesie przełożonego wewnątrz kontenera.
Zmienne serwisowe poczty
Laravel Sail jest wyposażony w kontener Mailhog do przechwytywania wiadomości e -mail wysyłanych podczas rozwoju. Te zmienne konfigurują ustawienia poczty:
- `Mail_mailer`: Ustaw na` SMTP` lub innego sterownika pocztowego.
- `Mail_host`: Nazwa hosta dla serwera poczty, zwykle„ Mailhog`.
- `Mail_port`: Port dla SMTP, powszechnie` 1025` dla Mailhog.
- `Mail_username` i` Mail_Password`: W razie potrzeby poświadczenia (powszechnie pozostawione puste).
sterowniki kolejki i pamięci podręcznej
Domyślny żagiel „.env” może je ustawić:
- `queue_connection`: definiuje sterownik kolejki, taki jak` sync`, `baza danych 'lub` `redis`.
- `Cache_driver`: Określa sterownik pamięci podręcznej, często„ plik ”lub„ redis ”.
Inne zmienne środowiska serwisowego
- `xdebug_config`: Automatycznie skonfigurowany przez Sail do debugowania za pomocą Xdebug, często ustawiając` client_host = host.docker.internal` dla komputerów Mac i Windows.
- `puid` i` pgid`: czasami widoczne w konfiguracjach niestandardowych żagli w celu jawnego ustawiania identyfikatorów użytkownika i grup do dopasowania użytkownika.
Podsumowanie ról zmiennych środowiskowych w żaglu
Te zmienne środowiskowe, głównie zdefiniowane w pliku „.env”, służą:
- Skonfiguruj podstawy aplikacji Laravel (nazwa, środowisko, tryb debugowania, URL).
- Podłącz kontener aplikacji Laravel do jego bazy danych i usług pamięci podręcznej w Docker.
- Mapowanie portów od kontenera do komputera hosta, unikając lokalnych konfliktów portów.
- Zapewnij odpowiednie uprawnienia użytkownika i grupy między systemami hosta i kontenerów.
- Dostosuj kontenery i procesy środowiska Sail Laravel do zaawansowanego użytkowania.
Zmienne środowiska plików „.env” bezpośrednio kontrolują zachowanie kontenerów zdefiniowanych w „Docker-Compose.yml` Sail i wszelkich rozszerzonych plikach komponowanych wskazanych przez„ Sail_files ”. Dostosowanie tych zmiennych i ponowne uruchomienie żagla (przy użyciu poleceń takich jak `./vendor/bin/sail down` i` ./vendor/bin/sail up-D`) stosuje zmiany konfiguracji.
Ta konfiguracja pozwala Laravel Sail zapewnić izolowane, ale konfigurowalne, lokalne środowisko programistyczne przy użyciu Docker, odzwierciedlając zachowania produkcyjne wszędzie tam, gdzie jest praktyczne, zachowując wygodę i elastyczność programistów.