Ein ausführliches Tutorial zur Verwendung von Docker zum Erstellen einer vollständigen Entwicklungsumgebung

Ein ausführliches Tutorial zur Verwendung von Docker zum Erstellen einer vollständigen Entwicklungsumgebung

Einführung in DNMP

DNMP (Docker + Nginx + MySQL + PHP7/5 + Redis) ist ein voll funktionsfähiges LNMP-Ein-Klick-Installationsprogramm . Es unterstützt umfangreiche Dienste, leistungsstarke Funktionen, ist einfach zu verwenden und mit mehreren Plattformen kompatibel. Es handelt sich um einen vollständigen Satz von PHP-Umgebungen für Docker-Entwicklungs- und Produktionsumgebungen, die für mehrere Terminals geeignet sind.

Funktionen des DNMP-Projekts:

  • 100% Open Source
  • 100% konform mit Docker-Standards
  • Unterstützt die Koexistenz mehrerer PHP-Versionen , zwischen denen nach Belieben gewechselt werden kann (PHP5.4, PHP5.6, PHP7.1, PHP7.2, PHP7.3)
  • Unterstützt die Bindung einer beliebigen Anzahl von Domänennamen
  • Unterstützung für HTTPS und HTTP/2
  • PHP-Quellcode, MySQL-Daten, Konfigurationsdateien und Protokolldateien können direkt im Host geändert und angezeigt werden
  • Integrierter Befehl zur vollständigen Installation von PHP-Erweiterungen
  • Standardmäßig unterstützt es gängige Erweiterungen wie pdo_mysql , mysqli , mbstring , gd , curl , opcache usw. und kann je nach Umgebung flexibel konfiguriert werden.
  • Gängige Dienste sind mit einem Klick anwählbar:
  1. Mehrere PHP-Versionen: PHP5.4, PHP5.6, PHP7.1-7.3
  2. Webdienste: Nginx, Openresty
  3. Datenbank: MySQL5, MySQL8, Redis, memcached, MongoDB, ElasticSearch
  4. Nachrichtenwarteschlange: RabbitMQ
  5. Hilfstools: Kibana, Logstash, phpMyAdmin, phpRedisAdmin, AdminMongo
  6. In tatsächlichen Projekten angewendet, um 100% Verfügbarkeit sicherzustellen
  7. Alle Bilder stammen aus dem offiziellen Docker-Repository, sicher und zuverlässig
  8. Einmalige Konfiguration, verfügbar für Windows, Linux und MacOs
  9. Unterstützt die schnelle Installation des Erweiterungsbefehls install-php-extensions apcu
  10. Spezifische Verwendungsdokumente finden Sie unter: https://gitee.com/bruce_qiq/dnmp/blob/master/README.md. In der Dokumentation gibt es bereits ein klares Tutorial zur Verwendung. Als Nächstes führen wir nach der Installation eine einfache Demonstration einiger grundlegender Vorgänge durch, da einige Vorgänge in der Quelldokumentation nicht sehr detailliert sind und offensichtliche Fallstricke aufweisen. Erfasst hauptsächlich mehrere Funktionen:

1. Beheben Sie das Problem, dass keine Verbindung zu MySQL hergestellt werden kann.

2. Konfigurieren Sie den virtuellen NGINX-Domänennamen.

3. Installieren Sie PHP-Erweiterungen.

Da ich dieses Paket weiterhin als meine eigene Entwicklungsumgebung verwenden möchte, werde ich später verschiedene Probleme zusammenfassen und iterative Aktualisierungen basierend auf dem Repository des ursprünglichen Eigentümers vornehmen. Folgen Sie uns gerne. Der technische Kreis der öffentlichen Kontokarte II

MySQL-Verbindungsproblem beheben

Da dnmp während der Installation den lokalen Port 3305 dem Port 3306 des MySQL-Containers zuordnet, müssen wir beim Verbinden eine Verbindung zu Port 3305 herstellen.

Unter dem www-Verzeichnis des Beispielcodes befindet sich ein localhost-Verzeichnis. Wir finden einen Codeabschnitt zum Testen von MySQL wie folgt:

// MySQL-Dienstfunktion getMysqlVersion() erkennen
{
  wenn (Erweiterung geladen ('PDO_MYSQL')) {
    versuchen {
      $dbh = neues PDO('mysql:host=192.168.2.103;dbname=mysql', 'root', '123456');
      $sth = $dbh->query('VERSION() als Version auswählen');
      $info = $sth->fetch();
    } Fang (PDOException $e) {
      gibt $e->getMessage() zurück;
    }
    return $info['version'];
  } anders {
    return 'PDO_MYSQL-Erweiterung ist nicht installiert ×';
  }
}

Wir müssen den Code lediglich wie folgt ändern:

// MySQL-Dienstfunktion getMysqlVersion() erkennen
{
  wenn (Erweiterung geladen ('PDO_MYSQL')) {
    versuchen {
      $dbh = neues PDO('mysql:host=192.168.2.103;port=3305;dbname=mysql', 'root', '123456');
      $sth = $dbh->query('VERSION() als Version auswählen');
      $info = $sth->fetch();
    } Fang (PDOException $e) {
      gibt $e->getMessage() zurück;
    }
    return $info['version'];
  } anders {
    returniere 'PDO_MYSQL-Erweiterung ist nicht installiert ×';
  }
}

Hier ist 192.168.2.103 die IP-Adresse unseres Host-Rechners. Sie können sie entsprechend Ihrer tatsächlichen Situation ausfüllen. Sie können es über ifconfig anzeigen. Wenn es sich um ein Windows-System handelt, überprüfen Sie es mit ipconfig.

 ifconfig

Konfigurieren Sie den NGINX-Domänennamen

Vor der Konfiguration müssen wir einige Dinge klären. Der Speicherort unseres Quellcodeverzeichnisses, der NGINX-Konfigurationsdatei und der NGINX-Protokolldatei. Besonderer Hinweis:

1. Wir können dem Screenshot entnehmen, dass sich im Verzeichnis conf.d zwei Konfigurationsdateien befinden. Diese beiden sind die Domänennamendateien, die ich vorab konfiguriert habe. Diese Datei wird über den NGINX-Container der lokalen Festplatte zugeordnet. Daher kann es über den Hostcomputer angezeigt werden.

2. Die Protokolldatei enthält die Fehler-, Zugriffs- und anderen zugehörigen Protokolldateien von NGINX, die auch dem Host im NGINX-Container zugeordnet sind.

3. Das „www“ hier ist der Pfad zum Programmquellcode. Alle unsere Programmquellcodes können hier abgelegt werden.

Für die NGINX-Domänennamen-Konfigurationsdatei wird empfohlen, den Container zum Schreiben einzugeben, anstatt sie auf dem Hostcomputer zu schreiben.

Schritt 1: Gehen Sie zu unserem WWW-Verzeichnis und installieren Sie eine Anwendung. Es wird empfohlen, für die Installation Compser zu verwenden. Informationen zur Verwendung von Composer finden Sie auch in der Dokumentation zur einfachen Konfiguration.

ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   Master ●  Komponist Projekt erstellen topthink/think=5.1.35 tp5
Erstellen eines „topthink/think=5.1.35“-Projekts unter „./tp5“
Installation von topthink/think (v5.1.35)
 - Installation von topthink/think (v5.1.35): Laden aus dem Cache
Projekt in /app/tp5 erstellt
Laden von Composer-Repositorys mit Paketinformationen
Aktualisieren von Abhängigkeiten (einschließlich require-dev)
Paketoperationen: 2 Installationen, 0 Updates, 0 Entfernungen
 - Topthink/think-installer installieren (v2.0.0): Aus dem Cache laden
 - Topthink/Framework installieren (v5.1.39): Laden aus dem Cache
Sperrdatei schreiben
Generieren von Autoload-Dateien
 ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  ll
gesamt 0
drwxr-xr-x 3 ert Mitarbeiter 96B 9 6 22:02 localhost
drwxr-xr-x 19 ert Mitarbeiter 608B 9 8 22:26 tp5

Auf diese Weise wird lokal ein tp5-Framework eingerichtet. Schritt 2: Rufen Sie den NGINX-Container auf, zeigen Sie die Container-ID des Docker-Containers über Docker PS an und rufen Sie den Container mit dem Befehl Docker Exec auf.

ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
0f5f9cd08aa2 dnmp_php "docker-php-entrypoi…" vor 27 Stunden Up Ungefähr eine Stunde 9000/tcp, 9501/tcp php
8bc44fc8c578 dnmp_nginx "/docker-entrypoint.…" vor 27 Stunden Aktiv seit 26 Stunden 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx
f02ad53bf14d mysql:5.7.28 "docker-entrypoint.s..." vor 27 Stunden Aktiv seit 26 Stunden 33060/tcp, 0.0.0.0:3305->3306/tcp mysql5
 ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  docker exec -it 8bc44fc8c578 /bin/sh
/www#ls
lokaler Host tp5

Geben Sie den Pfad der NGINX-Konfigurationsdatei ein

/ # cd /etc/nginx/
/etc/nginx # ls -la
insgesamt 60
drwxr-xr-x 1 root root 4096 8. Sep. 20:23 .
drwxr-xr-x 1 root root 4096 7. Sep. 19:34 ..
drwxr-xr-x 5 root root 160 8. September 20:05 conf.d
-rw-r--r-- 1 root root 429 6. September 22:02 fastcgi-php.conf
-rw-r--r-- 1 root root 1077 8. Juli 00:14 fastcgi.conf
-rw-r--r-- 1 root root 1062 6. September 22:02 fastcgi_params
-rw-r--r-- 1 root root 2837 8. Juli 00:14 koi-utf
-rw-r--r-- 1 Wurzel Wurzel 2223 Jul 8 00:14 koi-win
-rw-r--r-- 1 root root 5231 8. Juli 00:14 mime.types
lrwxrwxrwx 1 root root 22. Juli 11 04:27 Module -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root 760 6. September 22:02 nginx.conf
drwxr-xr-x 2 root root 4096 8. Sep 20:23 neu schreiben
-rw-r--r-- 1 root root 636 8. Juli 00:14 scgi_params
-rw-r--r-- 1 root root 664 8. Juli 00:14 uwsgi_params
-rw-r--r-- 1 root root 3610 8. Juli 00:14 win-utf

conf.d ist unser Domänennamen-Konfigurationspfad und nginx ist die Standardkonfigurationsdatei.

Erstellen Sie eine Domänenkonfigurationsdatei.

/etc/nginx # cd conf.d/ && touch tp5.conf
/etc/nginx/conf.d # ls -la
insgesamt 16
drwxr-xr-x 5 root root 160 8. Sep. 20:05 .
drwxr-xr-x 1 root root 4096 8. Sep. 20:23 ..
-rw-r--r-- 1 root root 48 6. September 22:02 .gitignore
-rw-r--r-- 1 root root 2254 6. September 22:02 localhost.conf
-rw-r--r-- 1 root root 505 8. September 20:29 tp5.conf

Konfigurieren Sie die Datei tp5.conf. Kopieren Sie den folgenden Inhalt:

Server {
  hören Sie 80;
  Servername tp5.com;
  Wurzel /www/tp5/public;
  Indexierung index.php;
  #NGINX-Protokolldatei. Wenn es sich um einen anderen Domänennamen handelt, ersetzen Sie einfach den Dateinamen durch nginx.tp5.com.xx.log.
  Zugriffsprotokoll /var/log/nginx/nginx.tp5.com.access.log;
  Fehlerprotokoll /var/log/nginx/nginx.tp5.com.error.log;
  Die URL-Rewrite-Datei von #Thinkphp5 vermeidet wiederholtes Schreiben und legt sie in einer separaten Datei ab. Andere Thinkphp-Projekte können in Zukunft direkt importiert werden.
  rewrite/thinkphp.conf einschließen;
  Standort ~ \.php$ {
      # Hier ist php der Name des PHP-Containers, der in die tatsächliche IP geändert werden kann. Dies wird nicht empfohlen, da sich die IP ändern wird.
      fastcgi_pass php:9000;
      fastcgi-php.conf einschließen;
      fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name;
      fastcgi_params einschließen;
    }
}

Testen Sie die Domänennamenkonfiguration und starten Sie den NGINX-Dienst neu.

/etc/nginx/conf.d # nginx -t und nginx -s neu laden
nginx: die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist in Ordnung
nginx: Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreich
/etc/nginx/conf.d #

Fügen Sie den Domänennamen zur Hostdatei des Hostcomputers hinzu.

Zugangstest

Installation der PHP-Erweiterung

Beim Erstellen einer Docker-Umgebung wird die Redis-Erweiterung von PHP nicht standardmäßig installiert. Hier nehmen wir die Redis-Erweiterung als Beispiel.

Da einige Erweiterungen integriert sind (Informationen zu bestimmten Erweiterungen finden Sie in der oben genannten Verwendungsdokumentation), können Sie diese direkt mit dem Befehl installieren.

PHP-Erweiterungen installieren Redis

Testen von Erweiterungen

/www # php --ri redis
Redis
Redis-Unterstützung => aktiviert
Redis-Version => 5.3.1
......

Zusammenfassen

Dies ist das Ende dieses Artikels über die Verwendung von Docker zum Erstellen einer vollständigen Entwicklungsumgebung. Weitere Informationen zur Verwendung von Docker zum Erstellen einer vollständigen Entwicklungsumgebung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So erstellen Sie schnell eine Oracle-Entwicklungsumgebung mit Docker
  • Detaillierte Erklärung zum Einrichten der Docker-Entwicklungsumgebung unter MAC OSX
  • Ubuntu erstellt eine auf Docker basierende LNMP + Redis-Entwicklungsumgebung (Bild und Text)
  • Ein ausführliches Tutorial zum Erstellen einer PHP-Entwicklungsumgebung basierend auf Docker

<<:  Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen

>>:  Eine kurze Analyse von MySQL-Sperren und -Transaktionen

Artikel empfehlen

IDEA verwendet das Docker-Plugin (Tutorial für Anfänger)

Inhaltsverzeichnis veranschaulichen 1. Aktivieren...

Detaillierte Erläuterung der MySQL-Transaktionsisolationsebene und des MVCC

Inhaltsverzeichnis Transaktionsisolationsebene Be...

Wie MLSQL Stack das Stream-Debugging vereinfacht

Vorwort Ein Klassenkamerad untersucht die Streami...

Tutorial zur Installation von Elasticsearch 7.6.2 in Docker

Docker installieren Sie müssen Docker installiere...

Zusammenfassung der 10 gängigen HBase-Betriebs- und Wartungstools

Zusammenfassung: HBase verfügt über zahlreiche Be...

So fragen Sie einen Datensatz in MySQL ab, auf welcher Seite der Paging-Seite

Vorwort In der Praxis kann es zu folgendem Proble...

Zusammenfassung häufig verwendeter MySQL-Befehle im Linux-Betriebssystem

Hier sind einige gängige MySQL-Befehle für Sie: -...

Einige Details zu Semikolons in JavaScript

Vorwort Semikolons sind in JavaScript optional un...

H-Tags sollten bei der Erstellung von Webseiten sinnvoll verwendet werden

HTML-Tags haben spezielle Tags zur Handhabung des ...

Ein kurzer Überblick über CSS3-Pseudoklassenselektoren

Vorwort Wenn CSS die Grundfertigkeit der Front-En...

Lernen wir JavaScript objektorientiert kennen

Inhaltsverzeichnis JavaScript-Prototypenkette Obj...