Laravel Sail, eine Entwicklungsumgebung für Laravel unter Verwendung von Docker, beruht stark auf Umgebungsvariablen, die hauptsächlich in der Datei ".Env` am Stamm des Projekts" definiert sind. Diese Umgebungsvariablen konfigurieren die Anwendung und ihre Dienste, wodurch eine nahtlose Orchestrierung von Containern und die für die lokale Entwicklung geeignete Einstellungen ermöglicht werden.
Die in Laravel Sail verwendeten gemeinsamen Umgebungsvariablen können nach ihrem Zweck gruppiert werden: Anwendungskonfiguration, Datenbankkonfiguration, Service-Ports und -bindungen, Containerbenutzereinstellungen und segelspezifische Anpassungen.
Anwendungskonfigurationsvariablen
- `app_name`: Definiert den Namen der Laravel -Anwendung.
- `app_env`: Legt den Umgebungstyp fest, üblicherweise` local` für Segel.
- `app_key`: Ein von Laravel für Verschlüsselung und Sitzungssicherheit verwendeter Verschlüsselungsschlüssel.
- `app_debug`: Ein boolescher Flag, um detaillierte Fehlermeldungen und Debugging -Funktionen zu aktivieren (` true` oder `false`).
- `app_url`: Die URL, in der die Anwendung lokal zugänglich ist und häufig auf` http: // localhost` eingestellt ist.
Datenbankverbindungsvariablen
Um den Datenbankcontainer ("MySQL` -Service) zu orchestrieren, verwendet Sail Variablen, die die Verbindung zum MySQL -Datenbankcontainer definieren:
- `db_connection`: Zeigt den Datenbank -Treiber an, typischerweise` MySQL`.
- `db_host`: Hostname für den Datenbankserver, normalerweise der Name des MySQL -Containers, wie z. B.` mySQL`.
- `db_port`: Standardport für die MySQL -Konnektivität, normalerweise` 3306`.
- `db_database`: Der Name der Datenbank, die im Container verwendet wird.
- `db_username`: Benutzername, um auf die Datenbank zuzugreifen.
- `db_password`: Passwort für den Datenbankbenutzer.
Redis -Konfiguration
Segel unterstützt optional Redis für das Caching- oder Sitzungshandling. Diese Variablen konfigurieren Redis -Konnektivität:
- `Redis_host`: Hostname für den Redis -Server, oft` Redis`, um dem Redis -Container übereinzustimmen.
- `Redis_password`: Passwort für Redis, falls vorhanden.
- `Redis_port`: Port Redis hört häufig zu` 6379`.
Service -Port -Weiterleitungsvariablen
Um Konflikte mit Diensten zu vermeiden, die bereits auf gemeinsamen Ports im Host -System ausgeführt werden, ermöglicht Sail die Anpassung von weitergeleiteten Ports für seine Dienste:
- `Vorwärts_DB_PORT`: Lokaler Maschinenport, der an den Standardport 3306 von MySQL im Container weitergeleitet wird (z. B. können Sie dies festlegen, wenn Port 3306 besetzt ist).
- `Vorwärts_Redis_port`: Lokaler Port wird an REDIS -Standardport 6379 weitergeleitet.
- `vorwärts_mailhog_port`: Der lokale Port wird an den MailHog -Serviceport weitergeleitet, der normalerweise für E -Mail -Tests verwendet wird.
- Andere `Forward_*` Variablen gibt es für Dienste wie PhpMyAdmin oder andere Segeldienste, falls konfiguriert.
Container -Benutzer- und Berechtigungsvariablen
Sail führt Container mit einem Benutzer aus, der dem lokalen Hostbenutzer entspricht, um sicherzustellen, dass die Dateiberechtigungen zwischen Host und Container konsistent bleiben. Diese Variablen steuern die Benutzer -IDs:
- `wwwuser`
- `wwwGroup`: Legt die Gruppen -ID im Container so ein, dass sie dem Host entspricht.
Segelanpassungsvariablen
- `app_service`: Ermöglicht das Ändern des Namens des primären Laravel Application Service Container in der` docker-compose.yml`. Dies kann für erweiterte Konfigurationen nützlich sein.
- `SAME_FILES`: Mit zusätzlichen Docker -Verfassungsdateien angeben, die neben den Standard -Segeldateien geladen werden sollen. Dies dient zum Anpassen oder Erweitern der Segelumgebung.
- `Supervisor_Php_Command`: Wird verwendet, um den Befehl PHP -Start im HauptlaVel -Segel -Container anzupassen, bei der Integration von Tools wie Laravel Octane nützlich.
- `Supervisor_Php_user`: Legt den Benutzer fest, der PHP im Supervisor -Prozess im Container ausführt.
Mail -Service -Variablen
Laravel Sail wird mit einem MailHog -Container ausgestattet, um E -Mails zu erfassen, die während der Entwicklung gesendet wurden. Diese Variablen konfigurieren E -Mail -Einstellungen:
- `mail_mailer`: auf` SMTP` oder einen anderen Mailer -Treiber einstellen.
- `mail_host`: hostname für den Mailserver, normalerweise` MailHog`.
- `mail_port`: Port für SMTP, üblicherweise` 1025` für MailHog.
- `mail_username` und` mail_password`: Bei Bedarf Anmeldeinformationen (üblicherweise in der Entwicklung leer).
Warteschlange und Cache -Treiber
Sail's Standard `.env` kann diese festlegen:
- `queue_connection`: Definiert den Warteschlangentreiber wie" Sync`, "Database" oder "Redis".
- `cache_driver
Andere Serviceumgebungsvariablen
- `xdebug_config`: automatisch konfiguriert durch Segel für das Debuggen mit XDEBUG, häufig Einstellen von` client_host = host.docker.internal` für Mac und Windows.
- `puid` und` pgid`: gelegentlich in benutzerdefinierten Segelkonfigurationen zu sehen, um Benutzer- und Gruppen-IDs für die Übereinstimmung der Benutzer-Permission explizit festzulegen.
Zusammenfassung der variablen Umgebungsrollen im Segel
Diese Umgebungsvariablen, die hauptsächlich in der Datei `.env` definiert sind, dienen:
- Konfigurieren Sie die Grundlagen für die Laravel -Anwendung (Name, Umgebung, Debug -Modus, URL).
- Schließen Sie den Laravel -Anwendungscontainer an seine Datenbank- und Cache -Dienste in Docker an.
- Kartenanschlüsse vom Container bis zum Host -Computer, wodurch lokale Portkonflikte vermeiden.
- Stellen Sie sicher, dass Benutzer- und Gruppenberechtigungen zwischen Host- und Containersystemen.
- Passen Sie die Laravel Sail -Umgebungscontainer und -Prozesse für fortgeschrittene Nutzung an.
Die Variablen ".Env" -Dateiumgebungsvariablen steuern das Verhalten von Containern, die in Sail 'docker-compose.yml` und allen von "Sail_files" angegebenen erweiterten Komponierungsdateien definiert sind. Das Anpassen dieser Variablen und das Neustart von Segeln (unter Verwendung von Befehlen wie `./vendor/bin/sail Down` und` ./vendor/bin/sail up -d`) führt die Konfigurationsänderungen an.
Dieses Setup ermöglicht es Laravel Sail, eine isolierte, dennoch konfigurierbare lokale Entwicklungsumgebung mit Docker zu bieten, wobei das Produktionsverhalten überall praktisch spiegelt und gleichzeitig die Bequemlichkeit und Flexibilität des Entwicklers beibehält.