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
hosts
Datei 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 build
ausfü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 build
ausfü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: