Bedarf:
Um diesem Artikel folgen zu können, muss Docker auf Ihrem Computer installiert sein. LinuxHint hat viele Artikel, denen Sie folgen können, um Docker auf Ihrer gewünschten Linux-Distribution zu installieren, wenn Sie es noch nicht installiert haben. Überprüfen Sie also unbedingt LinuxHint.com, falls Sie Probleme bei der Installation von Docker haben.
Docker Compose installieren:
Sie können die Docker Compose-Binärdatei sehr einfach mit dem folgenden Befehl herunterladen:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
HINWEIS: Locken ist möglicherweise nicht auf Ihrer Linux-Distribution installiert. In diesem Fall können Sie curl mit dem folgenden Befehl installieren:
Ubuntu/Debian/Linux Mint:
$ sudo apt install curl -yCentOS/RHEL/Fedora:
$ sudo dnf install curl -yEinmal docker-compose Binärdatei heruntergeladen wird, führen Sie den folgenden Befehl aus:
$ sudo chmod +x /usr/local/bin/docker-compose
Prüfen Sie nun, ob docker-compose Befehl funktioniert wie folgt:
$ docker-compose-VersionEs sollte die Versionsinformationen wie im Screenshot unten gezeigt drucken.
Docker Compose für das Projekt einrichten:
Erstellen Sie nun ein Projektverzeichnis ~/Docker/Lampe (sagen wir) und a html/ Verzeichnis innerhalb des Projektverzeichnisses zum Speichern der Website-Dateien (i.e. php, html, css, js usw.) wie folgt:
$ mkdir -p ~/docker/lamp/html
Navigieren Sie nun zum Projektverzeichnis ~/Docker/Lampe wie folgt:
$ cd ~/docker/lampe
Ein ... kreieren php.Dockerfile im Projektverzeichnis ~/Docker/Lampe. Dies ist ein Dockerfile, das mysqli- und PDO-php-Erweiterungen im php: 7.4.3-Apache Image von Docker Hub und erstellt daraus ein benutzerdefiniertes Docker-Image.
Der Inhalt der php.Dockerfile ist unten angegeben.
VON php: 7.4.3-ApacheLAUF
docker-php-ext-install mysqli pdo pdo_mysql
Erstellen Sie nun a docker-compose.yaml Datei im Projektverzeichnis ~/Docker/Lampe und geben Sie die folgenden Zeilen in die . ein docker-compose.yaml Datei.
Version: "3.7"Dienstleistungen:
Webserver:
bauen:
dockerfile: php.Dockerfile
Kontext: .
Neustart: immer
Bände:
- "./html/:/var/www/html/"
Häfen:
- "8080:80"
MySQL-Server:
Bild: mysql:8.0.19
Neustart: immer
Umgebung:
MYSQL_ROOT_PASSWORD: geheim
Bände:
- mysql-data:/var/lib/mysql
phpmyadmin:
Bild: phpmyadmin/phpmyadmin:5.0.1
Neustart: immer
Umgebung:
PMA_HOST: mysql-server
PMA_USER: root
PMA_PASSWORD: geheim
Häfen:
- "5000:80"
Bände:
MySQL-Daten:
Das docker-compose.yaml Datei sollte wie folgt aussehen.
Hier habe ich 3 Dienste erstellt Webserver, mysql-server und phpmyadmin.
Webserver service führt ein benutzerdefiniertes Docker-Image aus, wie in definiert php.Dockerfile.
mysql-server Dienst wird die mysql:8.0.19 Image (von DockerHub) in einem Docker-Container.
phpmyadmin Dienst wird die phpmyadmin/phpmyadmin:5.0.1 Image (von DockerHub) in einem anderen Docker-Container.
Im mysql-server Dienst, der MYSQL_ROOT_PASSWORD Umgebungsvariable wird verwendet, um die Wurzel Passwort von MySQL.
Im phpmyadmin Dienst, der PMA_HOST, PMA_USER, PMA_PASSWORD Umgebungsvariablen werden verwendet, um den MySQL-Hostnamen, den Benutzernamen bzw. das Passwort festzulegen, die phpMyAdmin verwendet, um eine Verbindung zum MySQL-Datenbankserver herzustellen, der als mysql-server Bedienung.
Im mysql-server Service, alle Inhalte der /var/lib/mysql Verzeichnis wird dauerhaft im mysql-daten Volumen.'
In dem Webserver Service, der Containerhafen 80 (rechts) ist dem Docker-Host-Port zugeordnet 8080 (links).'
In dem phpmyadmin Service, der Containerhafen 5000 (rechts) ist dem Docker-Host-Port zugeordnet 80 (links).
Erstellen Sie außerdem eine Index.php Datei in der html/ Verzeichnis zum Testen des LAMP-Servers.
Der Inhalt der Index.php Datei in meinem Fall,
$host = "mysql-server";$user = "root";
$pass = "geheim";
$db = "app1";
Versuchen
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Erfolgreich verbunden";
catch(PDOException $e)
echo "Verbindung fehlgeschlagen: " . $e->getMessage();
?>
Schließlich das Projektverzeichnis ~/Docker/Lampe sollte wie folgt aussehen:
Starten des LAMP-Servers:
Nun, um die zu starten Webserver, mysql-server und phpmyadmin Dienste, führen Sie den folgenden Befehl aus:
$ docker-compose up -d
Alle Dienste sollten im Hintergrund starten.
Führen Sie den folgenden Befehl aus, um zu sehen, wie die Ports zugeordnet sind:
$ docker-compose psWie Sie sehen können, für die Webserver service, der Docker-Host-Port 8080 wird dem Container-TCP-Port zugeordnet 80.
Für die phpmyadmin service, der Docker-Host-Port 5000 wird dem Container-TCP-Port zugeordnet 80.
Ermitteln der IP-Adresse des Docker-Hosts:
Wenn Sie von anderen Computern in Ihrem Netzwerk auf den LAMP-Server zugreifen möchten, müssen Sie die IP-Adresse Ihres Docker-Hosts kennen.
Führen Sie den folgenden Befehl aus, um die IP-Adresse Ihres Docker-Hosts zu ermitteln:
$ ipIn meinem Fall die IP-Adresse meines Docker-Hosts 192.168.20.160. Bei dir wird es anders sein. Stellen Sie also sicher, dass Sie es von nun an durch Ihres ersetzen.
Testen des LAMP-Servers:
Jetzt können Sie über einen Webbrowser auf phpMyAdmin 5 und den Webserver zugreifen.
Um auf phpMyAdmin 5 zuzugreifen, öffnen Sie einen Webbrowser und besuchen Sie http://localhost:5000 von Ihrem Docker-Host oder besuchen Sie http://192.168.20.160:5000 von jedem anderen Computer im Netzwerk.
phpMyAdmin 5 sollte in Ihrem Webbrowser geladen werden.
Erstellen Sie nun eine app1 MySQL-Datenbank von phpMyAdmin.
Besuchen Sie jetzt http://localhost:8080 von Ihrem Docker-Host oder http://192.168.20.160:8080 von jedem anderen Computer in Ihrem Netzwerk, um auf den Webserver zuzugreifen.
Du solltest das sehen Erfolgreich verbunden Botschaft. Das bedeutet, dass PHP funktioniert und der MySQL-Datenbankserver von der Seite aus zugänglich ist Webserver Container. Technisch gesehen ist der LAMP-Server also voll funktionsfähig.
Stoppen des LAMP-Servers:
Um das zu stoppen Webserver, mysql-server und phpmyadmin Dienste, führen Sie den folgenden Befehl aus:
$ docker-compose down
Das Webserver, mysql-server und phpmyadmin Dienste sollten eingestellt werden.
MySQL-Serverdaten bereinigen:
Wenn Sie alle MySQL-Datenbankdaten und -Einstellungen entfernen möchten, müssen Sie die mysql-daten Volumen.
Sie können den tatsächlichen Namen des Volumes mit dem folgenden Befehl ermitteln:
$ Docker-Volume ls
Sie können die Lautstärke entfernen lamp_mysql-data mit folgendem Befehl:
$ docker volume rm lamp_mysql-data
So richten Sie mit Docker einen LAMP-Server ein. Danke, dass du diesen Artikel gelesen hast.
Wie Sie sehen, ist das zu entfernende Volumen volume Lampen_mysql-Daten.