Dieser Artikel stellt die Entwicklungsumgebung von Laravel- und Vue-Projekten vor, die mit Docker erstellt wurden, und teilt sie mit Ihnen. Die Details sind wie folgt: In diesem Artikel verwenden wir Docker, um eine schnelle, leichte und reproduzierbare Entwicklungsumgebung für Laravel- und Vue-Projekte auf einem lokalen PC zu erstellen, die nicht auf einer auf dem lokalen PC installierten Entwicklungssuite basiert (alle Abhängigkeiten der Entwicklungsumgebung werden im Docker-Build-Container installiert). Vue wird nur hinzugefügt, weil einige Projekte Vue in Laravel-Projekten für die getrennte Entwicklung von Front-End und Back-End verwenden. Die Entwicklungsumgebung muss den für die Front-End-Entwicklung erforderlichen Toolsatz installieren. Natürlich können Front-End und Back-End für die Entwicklung auch in zwei Projekte aufgeteilt werden. Dieses Thema fällt nicht in den Rahmen dieses Artikels. Unsere Ziele sind also:
Bevor Sie beginnen, müssen Sie einen Docker-Client installieren. Auf der offiziellen Docker-Website finden Sie detaillierte Installationsanweisungen. Schritt 1: Holen Sie sich das Laravel-Quellpaket Da Composer nicht auf unserem Computer installiert ist, können wir Composer nicht zum Erstellen eines Laravel-Projekts verwenden. Hier verwende ich cURL, um das neueste Laravel-Quellcodepaket direkt von GitHub herunterzuladen. Sie können auch wget oder git clone verwenden, um das Quellcodepaket abzurufen. curl -L -O https://github.com/laravel/laravel/archive/v5.5.0.tar.gz / && tar -zxvf v5.5.0.tar.gz / && rm v5.5.0.tar.gz Der obige Befehl dekomprimiert das Quellcodepaket, nachdem curl es heruntergeladen hat. Löschen Sie nach der Dekomprimierung das Quellcodepaket Schritt 2: docker-compose.yml hinzufügen Erstellen Sie in Ihrem Projekt Der Anfang der Layoutdatei sieht wie folgt aus: Version: '2' Leistungen: # unsere Dienstleistungen werden hier erscheinen In der Orchestrierungsdatei wird jeder Container als Dienst bezeichnet und alle in der gesamten Anwendung verwendeten Dienste (also Container) werden unter „Dienste“ definiert. App-Dienste Der Container des APP-Dienstes führt den Code in unserem Projekt aus. App: bauen: Kontext: ./ Docker-Datei: app.dockerfile Arbeitsverzeichnis: /var/www Bände: - ./:/var/www Umfeld: - "DB_PORT=3306" – „DB_HOST=Datenbank“ Hinweise:
Jetzt müssen wir die im obigen Build-Schritt erwähnte Datei VON php:7.1.22-fpm # Pakete aktualisieren Führen Sie apt-get update aus. # Installieren Sie PHP- und Composer-Abhängigkeiten Führen Sie apt-get install -qq git curl aus. libmcrypt-dev libjpeg-dev libpng-dev libfreetype6-dev libbz2-dev # Löschen Sie das lokale Repository der abgerufenen Paketdateien # Führen Sie apt-get clean aus # Installieren Sie die benötigten Erweiterungen # Hier können Sie jede andere Erweiterung installieren, die Sie während des Test- und Bereitstellungsprozesses benötigen Führen Sie apt-get clean aus; docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath # Installiert Composer, um Ihre PHP-Abhängigkeiten einfach zu verwalten. FÜHREN SIE curl --silent --show-error https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer aus # Knoten installieren Führen Sie apt-get update &&\ aus. apt-get install -y --no-install-recommends gnupg &&\ curl -sL https://deb.nodesource.com/setup_10.x | bash - &&\ apt-get update &&\ apt-get install -y --no-install-recommends nodejs &&\ npm-Konfigurationssatzregistrierung https://registry.npm.taobao.org --global &&\ npm install --global gulp-cli CMD php-fpm Hinweise: Ich habe NPM und Composer zunächst im App-Container installiert, da sie während der Entwicklung häufig benötigt werden. Wenn es in die Produktionsumgebung freigegeben wird, wird im Allgemeinen ein separater Composer zum Erstellen des Projektcodes verwendet, anstatt ihn in den Container zu legen, in dem die Anwendung ausgeführt wird. Eine der Kernideen des Containers besteht darin, ihn einzeln zu halten, sodass Container mit derselben Rolle schnell hinzugefügt werden können. Webdienste Als nächstes müssen wir einen Webserver konfigurieren. Wir nennen diesen Container in der Orchestrierungsdatei Webseite: bauen: Kontext: ./ Docker-Datei: web.dockerfile Arbeitsverzeichnis: /var/www Bände_von: - App Häfen: -8080:80 Hinweise:
Der Webserver verwendet nginx, daher müssen wir eine nginx-Image-Datei verwenden, um diesen Container zu erstellen. Zuvor müssen wir VON nginx:1.10 Füge vhost.conf /etc/nginx/conf.d/default.conf hinzu Gemäß der Definition der Image-Datei haben wir Server { hören Sie 80; Index: Index.php; Index.html; Wurzel /var/www/öffentlich; Standort / { versuche_dateien $uri /index.php?$args; } Standort ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; fastcgi_params einschließen; fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } } Hinweise:
MySQL-Dienst Als Nächstes konfigurieren wir den Mysql-Dienst. Der Unterschied zu den beiden oben genannten Diensten besteht darin, dass wir in den PHP-FPM- und Nginx-Containern die Dateien auf dem lokalen Computer so konfigurieren, dass sie für den Containerzugriff mit dem Container synchronisiert werden. Auf diese Weise können wir bei Änderungen an den Dateien während der Entwicklung schnell Feedback im Container erhalten und so unseren Entwicklungsprozess beschleunigen. Im Datenbankcontainer hoffen wir jedoch, dass die im Container erstellten Dateien dauerhaft gespeichert werden können (wenn der Standardcontainer zerstört wird, werden auch die im Container erstellten Dateien zerstört). Wir können die obige Funktion über das Datenvolumen von Docker erreichen, aber dieses Mal müssen wir die Dateien auf dem lokalen Computer nicht mehr auf dem Datenvolumen mounten. Der Docker-Client verwaltet den spezifischen Speicherort des erstellten Datenvolumens auf dem lokalen Computer. Nachfolgend finden Sie die Einstellungen für den Datenbankdienst in der Orchestrierungsdatei Version: '2' Leistungen: Datenbank: Bild:mysql:5.7 Bände: -dbdata:/var/lib/mysql Umfeld: - „MYSQL_DATABASE=Homestead“ - "MYSQL_USER=homestead" - "MYSQL_PASSWORD=geheim" - "MYSQL_ROOT_PASSWORD=geheim" Häfen: - „33061:3306“ Bände: Datenbankdaten: Hinweise:
Orchestrieren Sie alle Dienste gemeinsam Unten finden Sie die vollständige Datei Version: '2' Leistungen: # Die Anwendung App: bauen: Kontext: ./ Docker-Datei: app.dockerfile Arbeitsverzeichnis: /var/www Bände: - ./:/var/www Umfeld: - "DB_PORT=3306" – „DB_HOST=Datenbank“ # Der Webserver Webseite: bauen: Kontext: ./ Docker-Datei: web.dockerfile Arbeitsverzeichnis: /var/www Bände_von: - App Häfen: -8080:80 # Die Datenbank Datenbank: Bild:mysql:5.6 Bände: -dbdata:/var/lib/mysql Umfeld: - „MYSQL_DATABASE=Homestead“ - "MYSQL_USER=homestead" - "MYSQL_PASSWORD=geheim" - "MYSQL_ROOT_PASSWORD=geheim" Häfen: - „33061:3306“ Bände: Datenbankdaten: Starten des Dienstes Nachdem wir die Orchestrierungsdatei und die angegebene Docker-Image-Datei gemäß den obigen Schritten konfiguriert haben, können wir den Dienst mit dem folgenden Befehl starten. Nach der Ausführung werden die drei in der obigen Datei definierten Dienste gestartet. docker-compose up -d Beim ersten Start wird der Docker-Client langsam starten, da er die drei oben genannten Images herunterladen und den Dienst erstellen muss. Nachdem die Images heruntergeladen und erstellt wurden, werden nachfolgende Starts sehr schnell sein. Laravel-Projekt initialisieren Nach dem Start des Dienstes können wir das Laravel-Projekt initialisieren. Die Schritte sind dieselben wie in der offiziellen Dokumentation beschrieben, müssen jedoch im Container des gestarteten App-Dienstes ausgeführt werden: docker-compose exec app composer installieren docker-compose exec app npm install // Wenn das Frontend-Projekt eingebunden ist, führe die entsprechenden Befehle aus docker-compose exec app cp .env.example .env Docker-Compose Exec App PHP Artisan Schlüssel: Generieren Docker-Compose, Exec-App, PHP, Artisan, Optimieren docker-compose exec app php artisan migrieren --seed Docker-Compose Exec App PHP Artisan Make:Controller MyController Hinweise:
So zeigen Sie Nginx-Protokolle an:
Nachdem Sie den obigen Befehl ausgeführt haben, können Sie über In meinem Github-Gist finden Sie eine Reihe von Referenzdateien zu Ihrer Information: https://gist.github.com/kevinyan815/fa0760902d29f19a4213b4a16fe0501b Die Dateien im Gist sind etwas veraltet. Später wurden im Laufe der Nutzung einige neue PHP-Module und Node hinzugefügt. Composer wurde zuvor auch in einem separaten Container abgelegt. Aber ich glaube, dass Sie nach dem Lesen dieses Artikels schlau genug sind, diese Dateien Ihren Bedürfnissen entsprechend zu ändern. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Spezifische Verwendung globaler Variablen von node.js
>>: Detaillierte Erläuterung der MySQL Master-Slave-Datenbankkonstruktionsmethode
1. Installation Suchen Sie über DockerHub nach de...
Inhaltsverzeichnis Überblick 1. So animieren Sie ...
Dieser Artikel verwendet die Lizenzvereinbarung „...
In diesem Artikel finden Sie das grafische Tutori...
Kapseln Sie el-dialog als Komponente ein Wenn wir...
Verwendung von neuen Die Funktion von new besteht...
Umsetzungsideen: Zunächst müssen die Alarminforma...
1. Maven herunterladen Offizielle Maven-Website: ...
In diesem Artikel werden zwei Methoden zur Implem...
Hintergrund Während des Projektentwicklungsprozes...
Lassen Sie mich zunächst über meinen Alltag sprec...
Erklären Sie den gesamten Prozess von CLion von G...
Inhaltsverzeichnis Einführung Erstellen eines Arr...
So zentrieren Sie den gesamten Seiteninhalt und pa...
In diesem Artikel werden Docker Container (orches...