Sprachen- und Framework-Handbü...
Aufbau und Bereitstellung von Dockerisierten Laravel-Apps
33 min
back4app containers ist eine leistungsstarke plattform zum hosten von laravel anwendungen mit der fähigkeit, dockerisierte laravel apps automatisch bereitzustellen, können sie ihr projekt in einer skalierbaren und flexiblen umgebung mit leichtigkeit starten in diesem leitfaden führen wir sie durch den prozess der vorbereitung und bereitstellung ihrer laravel anwendung auf back4app containers, wobei wir alles von einfachen projekten bis hin zu komplexeren setups abdecken wir beginnen mit den notwendigen vorbereitungen, gehen dann zur dockerisierung der anwendung über, testen sie lokal, pushen das projekt zu github, richten das projekt auf back4app containers ein, überwachen die bereitstellung und beheben häufige probleme wenn sie fragen oder kommentare haben, können sie gerne an der diskussion im #containers kanal der back4app community auf slack teilnehmen sie können uns jederzeit auch unter community\@back4app com kontaktieren wenn sie jederzeit ein funktionierendes beispielprojekt für laravel auf back4app containern überprüfen möchten, gehen sie zu https //github com/templates back4app/containers laravel sample 1 vorbereiten sie ihre laravel anwendung a projektstruktur überprüfen sie, ob ihre laravel anwendung eine ordnungsgemäße verzeichnisstruktur aufweist, mit allen notwendigen dateien und ordnern, wie app , routes , resources , und public , die angemessen organisiert sind b abhängigkeiten überprüfen sie, ob alle erforderlichen abhängigkeiten in der composer json datei aufgeführt sind, einschließlich ihrer korrekten versionen stellen sie sicher, dass sie alle abhängigkeiten mit composer install installiert haben, um eine composer lock datei zu generieren c umgebungsvariablen wenn ihre anwendung auf umgebungsvariablen angewiesen ist, stellen sie sicher, dass sie eine env datei mit den erforderlichen variablen definiert haben beim bereitstellen in back4app containern müssen sie diese umgebungsvariablen in den bereitstellungseinstellungen konfigurieren d servereinrichtung (falls zutreffend) wenn ihre laravel anwendung einen benutzerdefinierten server (z b apache oder nginx) enthält, stellen sie sicher, dass er korrekt eingerichtet und konfiguriert ist, um ihre laravel anwendung bereitzustellen testen sie ihren server lokal, um sicherzustellen, dass er wie erwartet funktioniert e anwendungsoptimierung optimieren sie ihre laravel anwendung, indem sie bewährte verfahren zur leistungsoptimierung umsetzen verwenden sie tools wie lighthouse, um ihre anwendung zu überprüfen und leistungs oder zugänglichkeitsprobleme zu beheben f cross browser kompatibilität testen sie ihre anwendung in mehreren browsern und auf verschiedenen geräten, um eine ordnungsgemäße darstellung und funktionalität sicherzustellen sobald sie ihre laravel anwendung gründlich überprüft und vorbereitet haben, können sie mit dem nächsten schritt fortfahren, der darin besteht, ein dockerfile für ihr projekt zu erstellen 2 dockerisierung die dockerisierung einer laravel anwendung umfasst die erstellung eines dockerfiles im stammverzeichnis ihres projekts das dockerfile enthält anweisungen zum erstellen eines docker images ihrer anwendung, das dann in back4app containern bereitgestellt werden kann hier ist eine detaillierte erklärung, wie sie ein dockerfile für eine reguläre laravel anwendung erstellen 1 erstellen sie eine neue datei mit dem namen dockerfile (ohne dateierweiterung) im stammverzeichnis ihrer laravel anwendung 2 definieren sie das basis image beginnen sie das dockerfile, indem sie ein basis image mit dem befehl from angeben für eine typische laravel anwendung sollte das basis image ein php image sein, z b php 8 1 apache from php 8 1 apache 3 setzen sie das arbeitsverzeichnis verwenden sie den befehl workdir, um das arbeitsverzeichnis für ihre anwendung innerhalb des docker containers festzulegen hier werden ihre anwendungsdateien gespeichert und ausgeführt workdir /var/www/html 4 kopiere die projektdateien kopiere alle dateien aus dem laravel anwendungsverzeichnis in den docker container mit dem copy befehl copy 5 abhängigkeiten installieren verwende den run befehl, um die erforderlichen abhängigkeiten für deine laravel anwendung mit composer install zu installieren run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist 6 richte den apache server ein aktiviere das rewrite modul von apache, konfiguriere die 000 default conf datei, um die richtigen apache einstellungen für laravel einzuschließen, und richte die apache umgebungsvariablen ein run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public 7 generiere den laravel app schlüssel laravel benötigt einen app schlüssel, um benutzersitzungen und andere sensible daten zu verschlüsseln verwende den run befehl, um den app schlüssel zu generieren run php artisan key\ generate 8 baue die laravel anwendung füge einen run befehl hinzu, um deine laravel anwendung mit deinem build skript zu bauen, typischerweise composer dump autoload , php artisan config\ cache , php artisan route\ cache und php artisan view\ cache run composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache 9 öffne den serverport verwende den expose befehl, um den port anzugeben, auf dem dein server im docker container läuft zum beispiel kannst du port 80 verwenden expose 80 10 starten sie den server verwenden sie den cmd befehl, um den befehl anzugeben, der den server startet, um ihre gebaute laravel anwendung bereitzustellen cmd \["apache2 foreground"] die vollständige dockerfile für eine reguläre laravel anwendung sollte folgendermaßen aussehen \#dockerfile example on running php laravel app using apache web server from php 8 1 apache \# install necessary libraries run apt get update && apt get install y \\ libonig dev \\ libzip dev \# install php extensions run docker php ext install \\ mbstring \\ zip \# copy laravel application copy /var/www/html \# set working directory workdir /var/www/html \# install composer copy from=composer\ latest /usr/bin/composer /usr/bin/composer \# install dependencies run composer install \# change ownership of our applications run chown r www data\ www data /var/www/html run docker php ext install mbstring copy env example env run php artisan key\ generate \# expose port 80 expose 80 \# adjusting apache configurations run a2enmod rewrite copy apache config conf /etc/apache2/sites available/000 default conffrom php 8 1 apache workdir /var/www/html copy run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public run php artisan key\ generate \\ && composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache expose 80 cmd \["apache2 foreground"] 3 testen sie ihr projekt lokal bevor sie ihre laravel anwendung auf back4app containern bereitstellen, ist es wichtig, sie lokal mit docker zu testen dies hilft sicherzustellen, dass ihre anwendung wie erwartet funktioniert und hilft ihnen, probleme vor der bereitstellung zu identifizieren und zu beheben bauen sie das docker image für ihre laravel anwendung navigieren sie in ihrem terminal zum stammverzeichnis ihres projekts und führen sie den folgenden befehl aus, wobei sie your app name durch den namen ihrer anwendung ersetzen führen sie den docker container lokal aus führen sie als nächstes den folgenden befehl aus, um den docker container lokal zu starten dieser befehl ordnet den freigegebenen port des containers (z b 80) einem port auf ihrem lokalen computer (z b 8000) zu testen sie ihre anwendung öffnen sie einen webbrowser und navigieren sie zu http //localhost 8080 http //localhost 8000/ , um ihre laravel anwendung anzuzeigen stellen sie sicher, dass alles wie erwartet funktioniert wenn sie auf probleme stoßen, beheben sie diese, bevor sie mit dem nächsten schritt fortfahren 4 pushen sie ihr projekt zu github erstellen sie eine gitignore datei im stammverzeichnis ihres projekts, um unnötige oder sensible dateien aus ihrem repository auszuschließen (z b vendor , env , node modules , usw ) initialisieren sie ein git repository, committen sie ihre projektdateien und pushen sie sie in ein remote repository (z b auf github) 5 deployen sie ihre anwendung auf back4app containers nachdem sie ihr back4app konto erstellt haben, können sie die in den docs aufgeführten schritte befolgen 1 verbinden sie ihr github repo mit back4app https //www back4app com/docs containers/integrate with github 2 bereiten sie ihr projekt für die bereitstellung vor https //www back4app com/docs containers/prepare your deployment zusammenfassend werden container den anweisungen folgen, die in ihrer dockerfile detailliert beschrieben sind, und beginnen, ihre app zu erstellen 6 überwachen sie die bereitstellung und beheben sie mögliche fehler behalten sie die bereitstellungsprotokolle und den status im back4app containers dashboard im auge beheben sie alle fehler oder probleme, die während der bereitstellung auftreten bei komplexeren projekten stellen sie sicher, dass alle erforderlichen dienste (wie datenbanken oder externe apis) korrekt konfiguriert und zugänglich sind 7 fehlerbehebung bei häufigen problemen häufige bereitstellungsfehler beim ausführen einer laravel app auf back4app containers sind hier https //www back4app com/docs containers/troubleshooting weitere mögliche häufige fehler bei der bereitstellung einer laravel anwendung sind falsche portkonfiguration laravel anwendungen sollten so konfiguriert werden, dass sie beim einsatz auf back4app containern auf einem bestimmten port laufen wenn die anwendung weiterhin nicht zugänglich ist, überprüfen sie die dockerfile, um sicherzustellen, dass der richtige port freigegeben ist (z b expose 80 für port 80) inkompatible oder fehlende abhängigkeiten stellen sie sicher, dass alle erforderlichen abhängigkeiten in der composer json datei aufgeführt sind und dass ihre versionen miteinander und mit ihrem anwendungscode kompatibel sind fehlende oder inkompatible abhängigkeiten können zu laufzeitfehlern führen ungültige umgebungsvariablen oder konfiguration überprüfen sie, ob ihre anwendung auf bestimmte umgebungsvariablen oder konfigurationsdateien angewiesen ist, und stellen sie sicher, dass diese im back4app container umfeld korrekt eingerichtet sind setzen sie alle erforderlichen umgebungsvariablen in ihrer dockerfile mit dem env befehl konnte den vollständig qualifizierten domainnamen des servers nicht zuverlässig bestimmen" fehler problem dieser fehler tritt auf, wenn apache den vollständig qualifizierten domainnamen (fqdn) des servers nicht bestimmen kann lösung um diesen fehler zu unterdrücken, können sie die servername direktive global in der apache konfiguration festlegen ändern sie die apache konfigurationsdatei ( apache config conf ) wie folgt apache config conf servername localhost \<virtualhost 80> documentroot /var/www/html/public \<directory /var/www/html/public> allowoverride all order allow,deny allow from all \</directory> \# log access messages to access log file errorlog /var/log/apache2/access log customlog /var/log/apache2/access log combined \# log error messages to error log file loglevel error errorlog /var/log/apache2/error log \</virtualhost> 500 interner serverfehler problem dieser fehler weist darauf hin, dass es ein problem mit der serverkonfiguration oder der anwendung selbst gibt lösung überprüfen sie die apache fehlerprotokolle ( /var/log/apache2/error log ) auf spezifischere fehlermeldungen dies kann helfen, die ursache des fehlers zu identifizieren überprüfen sie, ob die apache konfigurationsdatei ( apache config conf ) korrekt eingerichtet ist mit den entsprechenden documentroot und directory direktiven für ihre laravel anwendung stellen sie sicher, dass die erforderlichen php erweiterungen im dockerfile installiert und aktiviert sind verwenden sie den docker php ext install befehl, um die erforderlichen erweiterungen zu installieren, und den run a2enmod befehl, um apache module zu aktivieren überprüfen sie die dateiberechtigungen und den besitz ihrer laravel anwendungsdateien verwenden sie den chown befehl, um sicherzustellen, dass die dateien dem entsprechenden benutzer gehören ( www data in den meisten fällen) apache konfigurationsprobleme problem falsche oder fehlerhaft konfigurierte apache einstellungen können zu fehlern oder unerwartetem verhalten führen lösung überprüfen sie die apache konfigurationsdatei ( apache config conf ) sorgfältig, um sicherzustellen, dass sie korrekt auf das documentroot verzeichnis der laravel anwendung verweist und die entsprechenden directory direktiven hat aktivieren sie das rewrite modul, indem sie run a2enmod rewrite im dockerfile ausführen dies ist notwendig, damit das routing von laravel ordnungsgemäß funktioniert fehlende oder falsche abhängigkeiten problem wenn ihre laravel anwendung fehlende oder falsche abhängigkeiten hat, kann dies zu fehlern oder unerwartetem verhalten führen lösung überprüfen sie die composer json datei, um sicherzustellen, dass alle erforderlichen abhängigkeiten aufgeführt sind, einschließlich ihrer korrekten versionen führen sie composer install aus, um die abhängigkeiten zu installieren und eine composer lock datei zu generieren überprüfen sie, ob die erforderlichen php erweiterungen im dockerfile installiert und aktiviert sind, indem sie den befehl docker php ext install verwenden dateiberechtigungsprobleme problem falsche dateiberechtigungen können probleme mit der dateispeicherung oder dem cache von laravel verursachen lösung verwenden sie den befehl chown im dockerfile, um den besitz der laravel anwendungsdateien auf den entsprechenden benutzer ( www data in den meisten fällen) zu ändern stellen sie sicher, dass die verzeichnisse für speicher und cache die richtigen berechtigungen haben sie können chmod befehle im dockerfile ausführen, um die entsprechenden berechtigungen festzulegen anwendungsabstürze oder unbehandelte ausnahmen unbehandelte ausnahmen oder abstürze in ihrem laravel anwendungscode können zu bereitstellungsfehlern oder unerwartetem verhalten führen überprüfen sie ihre anwendungsprotokolle auf fehlermeldungen und beheben sie alle probleme in ihrem code überprüfen sie die containerprotokolle, indem sie docker logs your app name ausführen, um zu sehen, ob fehler oder ausnahmen auftreten verwenden sie ein tool wie sentry, um fehler in ihrer anwendung zu verfolgen und zu überwachen serverkonfiguration wenn ihre laravel anwendung eine benutzerdefinierte serverkonfiguration (z b apache oder nginx) enthält, stellen sie sicher, dass sie im dockerfile korrekt konfiguriert ist und dass die erforderlichen module oder konfigurationen installiert sind falsche dateiberechtigungen falsche dateiberechtigungen können zur laufzeitfehler führen, wenn eine laravel anwendung auf back4app containern bereitgestellt wird stellen sie sicher, dass die erforderlichen verzeichnisse und dateien die richtigen berechtigungen haben, wie in der laravel dokumentation angegeben speicherbeschränkungen wenn ihre anwendung beim bereitstellen auf back4app containern an speichergrenzen stößt, sollten sie in betracht ziehen, das speicherlimit im dockerfile mithilfe der php ini einstellungen zu erhöhen netzwerkprobleme wenn ihre laravel anwendung auf externe dienste oder apis angewiesen ist, stellen sie sicher, dass diese korrekt konfiguriert und aus der umgebung der back4app container zugänglich sind verwenden sie die docker netzwerkbefehle, um netzwerkprobleme zu beheben 8 skalieren sie ihre anwendung für komplexere projekte, die zusätzliche ressourcen oder horizontale/vertikale skalierung erfordern, sollten sie in betracht ziehen, ihren back4app container plan zu aktualisieren, um erhöhten verkehr und last zu bewältigen 9 beispielanwendung für ein beispielprojekt einer laravel anwendung können sie gehen zu https //github com/templates back4app/containers python flask sample