
Eine grundlegende LAMP-Stack-Umgebung, die mit Docker Compose erstellt wurde. Es besteht aus Folgendem:
Derzeit haben wir mehrere verschiedene PHP-Versionen. Verwenden Sie bei Bedarf die entsprechende PHP-Version:
docker compose up -d aus. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost Ihr LAMP-Stack ist jetzt fertig!! Sie können über http://localhost darauf zugreifen.
Dieser Docker-Stack ist für die lokale Entwicklung und nicht für den Produktionseinsatz konzipiert.
Dieses Paket enthält Standardkonfigurationsoptionen. Sie können sie ändern, indem Sie .env Datei in Ihrem Stammverzeichnis erstellen. Zur Vereinfachung kopieren Sie einfach den Inhalt aus der Datei sample.env und aktualisieren Sie die Werte der Umgebungsvariablen entsprechend Ihren Anforderungen.
Es stehen die folgenden Konfigurationsvariablen zur Verfügung, die Sie durch Überschreiben in Ihrer eigenen .env Datei anpassen können.
PHPVERSION Wird verwendet, um anzugeben, welche PHP-Version Sie verwenden möchten. Standardmäßig wird immer die neueste PHP-Version verwendet.
PHP_INI Definieren Sie Ihre benutzerdefinierte php.ini -Änderung, um Ihre Anforderungen zu erfüllen.
DOCUMENT_ROOT
Es handelt sich um ein Dokumentenstammverzeichnis für den Apache-Server. Der Standardwert hierfür ist ./www . Alle Ihre Websites werden hier angezeigt und automatisch synchronisiert.
APACHE_DOCUMENT_ROOT
Wert der Apache-Konfigurationsdatei. Der Standardwert hierfür ist /var/www/html.
VHOSTS_DIR
Dies gilt für virtuelle Hosts. Der Standardwert hierfür ist ./config/vhosts . Hier können Sie die Konfigurationsdateien Ihrer virtuellen Hosts platzieren.
Stellen Sie sicher, dass Sie für jeden virtuellen Host einen Eintrag zur
hostsDatei Ihres Systems hinzufügen.
APACHE_LOG_DIR
Dies wird zum Speichern von Apache-Protokollen verwendet. Der Standardwert hierfür ist ./logs/apache2 .
Für Apple Silicon-Benutzer: Bitte wählen Sie Mariadb als Datenbank aus. Oracle erstellt seine SQL-Container nicht für die Arm-Architektur
DATENBANK
Definieren Sie, welche MySQL- oder MariaDB-Version Sie verwenden möchten.
MYSQL_INITDB_DIR
Beim ersten Start eines Containers werden Dateien in diesem Verzeichnis mit den Erweiterungen .sh , .sql , .sql.gz und .sql.xz in alphabetischer Reihenfolge ausgeführt. .sh Dateien ohne Dateiausführungsberechtigung werden als Quelle bereitgestellt und nicht ausgeführt. Der Standardwert hierfür ist ./config/initdb .
MYSQL_DATA_DIR
Dies ist das MySQL-Datenverzeichnis. Der Standardwert hierfür ist ./data/mysql . Alle Ihre MySQL-Datendateien werden hier gespeichert.
MYSQL_LOG_DIR
Dies wird zum Speichern von Apache-Protokollen verwendet. Der Standardwert hierfür ist ./logs/mysql .
Apache ist für die Ausführung auf Port 80 konfiguriert. Sie können also über http://localhost darauf zugreifen.
Standardmäßig sind die folgenden Module aktiviert.
Wenn Sie weitere Module aktivieren möchten, aktualisieren Sie einfach
./bin/phpX/Dockerfile. Sie können auch eine PR erstellen und wir werden zusammenführen, wenn dies für allgemeine Zwecke sinnvoll erscheint. Sie müssen das Docker-Image neu erstellen, indem Siedocker compose buildausführen und die Docker-Container neu starten.
Sie können mit dem Befehl docker compose exec eine Verbindung zum Webserver herstellen, um verschiedene Vorgänge darauf auszuführen. Verwenden Sie den folgenden Befehl, um sich über SSH beim Container anzumelden.
docker compose exec webserver bash Die installierte PHP-Version hängt von Ihrer .env Datei ab.
Standardmäßig sind folgende Erweiterungen installiert. Kann für PHP-Versionen <7.xx abweichen
Wenn Sie weitere Erweiterungen installieren möchten, aktualisieren Sie einfach
./bin/webserver/Dockerfile. Sie können auch eine PR erstellen und wir werden sie zusammenführen, wenn sie für allgemeine Zwecke geeignet erscheint. Sie müssen das Docker-Image neu erstellen, indem Siedocker compose buildausführen und die Docker-Container neu starten.
phpMyAdmin ist für die Ausführung auf Port 8080 konfiguriert. Verwenden Sie die folgenden Standardanmeldeinformationen.
http://localhost:8080/
Benutzername: root
Passwort: Tiger
Xdebug wird standardmäßig installiert und seine Version hängt von der in der ".env" -Datei ausgewählten PHP-Version ab.
Xdebug-Versionen:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Um Xdebug nutzen zu können, müssen Sie die Einstellungen in der Datei ./config/php/php.ini entsprechend der gewählten PHP-Version aktivieren.
Beispiel:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code: Sie müssen die Xdebug-Erweiterung „PHP Debug“ installieren. Gehen Sie nach der Installation zu Debug und erstellen Sie die Startdatei, damit Ihre IDE zuhören und ordnungsgemäß funktionieren kann.
Beispiel:
SEHR WICHTIG: Die pathMappings hängen davon ab, wie Sie den Ordner in VS Code geöffnet haben. Jeder Ordner verfügt über eigene Startkonfigurationen, die Sie in .vscode/launch.json anzeigen können
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}Erstellen Sie nun einen Haltepunkt und führen Sie Debug aus.
Tipp! Nach diesen Konfigurationen müssen Sie den Container möglicherweise neu starten.
Es kommt mit Redis. Es läuft auf dem Standardport 6379 .
Die Unterstützung für https Domänen ist integriert, aber standardmäßig deaktiviert. Es gibt drei Möglichkeiten, SSL zu aktivieren und zu konfigurieren. https auf localhost ist am einfachsten. Wenn Sie versuchen, eine Testumgebung so nah wie möglich an einer Produktionsumgebung nachzubilden, kann jeder Domänenname mit mehr Konfiguration unterstützt werden.
Hinweis: Für jeden nicht-localhost-Domänennamen, für den Sie https verwenden möchten, müssen Sie die Hosts-Datei Ihres Computers ändern und den Domänennamen auf 127.0.0.1 verweisen. Wenn Sie dies nicht tun, funktioniert SSL nicht und Sie werden jedes Mal ins Internet weitergeleitet, wenn Sie versuchen, diesen Domänennamen lokal aufzurufen.
Um https auf localhost (https://localhost) zu aktivieren, müssen Sie Folgendes tun:
localhost zu erstellen:mkcert im Terminal mkcert localhost 127.0.0.1 ::1 aus.cert.pem bzw. cert-key.pem um.config/ssl ablegen.443 vhost in config/vhosts/default.conf aus. Erledigt. Jedes Mal, wenn Sie Ihren LAMP-Container einschalten, funktioniert https jetzt auf localhost .
Wenn Sie für lokale Tests normale Domänennamen verwenden möchten und https Unterstützung benötigen, ist die einfachste Lösung ein SSL-Zertifikat, das alle Domänennamen abdeckt:
mkcert im Terminal mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1 aus, wobei Sie alle Domänennamen und IP-Adressen durch diejenigen ersetzen, die Sie unterstützen möchten.cert.pem bzw. cert-key.pem um.config/ssl ablegen.443 vhost in config/vhosts/default.conf aus. Erledigt. Da Sie alle Domänennamen in einem einzigen Zertifikat zusammengefasst haben, unterstützt die vhost-Datei Ihr Setup, ohne dass weitere Änderungen erforderlich sind. Sie können jedoch bei Bedarf domänenspezifische Regeln hinzufügen. Jedes Mal, wenn Sie Ihren LAMP-Container einschalten, funktioniert https jetzt auf allen von Ihnen angegebenen Domänen.
Wenn Sie möchten, dass Ihre lokale Testumgebung genau zu Ihrer Produktion passt und https Unterstützung benötigen, können Sie für jede Domäne, die Sie unterstützen möchten, ein SSL-Zertifikat erstellen:
mkcert im Terminal mkcert [your-domain-name(s)-here] aus und ersetzen Sie den Klammerteil durch Ihren Domainnamen.[name]-cert.pem und [name]-cert-key.pem und ersetzen Sie den Klammerteil durch einen eindeutigen Namen.config/ssl ablegen.443 Beispiels aus der vhost-Datei ( config/vhosts/default.conf ) neue Regeln, die Ihrem Domänennamen und den Namen der Zertifikatsdateien entsprechen. Erledigt. Der LAMP-Container ruft beim Start automatisch alle SSL-Zertifikate in config/ssl ab. Solange Sie die vhosts-Datei korrekt konfigurieren und die SSL-Zertifikate in config/ssl platzieren, funktioniert https jedes Mal, wenn Sie Ihren LAMP-Container einschalten, auf Ihren angegebenen Domänen.
Wir freuen uns, wenn Sie einen Pull-Request erstellen oder Menschen bei ihren Problemen helfen möchten. Wenn Sie eine PR erstellen möchten, denken Sie bitte daran, dass dieser Stack nicht für den Produktionsgebrauch konzipiert ist und dass Änderungen für allgemeine Zwecke und nicht überspezialisiert sein sollten.
Bitte beachten Sie, dass wir die Projektstruktur von mehreren Zweigen für jede PHP-Version auf einen zentralen Hauptzweig vereinfacht haben. Bitte erstellen Sie Ihre PR für den Hauptzweig.
Danke schön!
Wir möchten Entwickler in die Lage versetzen, schnell kreative Anwendungen zu erstellen. Daher bieten wir eine einfach einzurichtende lokale Entwicklungsumgebung für verschiedene Frameworks und PHP-Versionen an. In der Produktion sollten Sie mindestens die folgenden Themen ändern: