So erstellen Sie eine lnmp-Umgebung im Docker

So erstellen Sie eine lnmp-Umgebung im Docker

Erstellen eines Projektverzeichnisses

mkdir php

Erstellen Sie die folgende Projektstruktur

  • Im Verzeichnis „sites“ werden die Projektdateien abgelegt.
  • Das Verzeichnis „Dienste“ speichert die dienstbezogene Konfiguration
  • Skript Benutzerdefiniertes Skript platzieren
├── Readme.md
├── docker-compose.yml
├── Skript
├── Dienstleistungen
│ ├── MariaDB
│ │ └── Docker-Datei
│ ├── nginx
│ │ ├── Docker-Datei
│ │ ├── conf.d
│ │ │ └── default.conf
│ │ └── nginx.conf
│ ├── php
│ │ └── Docker-Datei
│ └── Redis
│ └── Docker-Datei
└── Seiten
 ├── index.html
 └── index.php

 
8 Verzeichnisse, 10 Dateien

Bearbeiten Sie die Docker-Compose-Datei

Version: "3"
Leistungen: 
 php:
 Erstellen: ./services/php
 Anzahl der Anschlüsse: 
 # - "9001:9000"
 Containername: lnmp-php
 Neustart: immer
 Bände: 
  - ./sites:/www
 Netzwerke:
  lnmp_net:
  IPv4-Adresse: 101.11.11.10

 nginx:
 Erstellen: ./services/nginx
 Häfen:
  - „81:80“
  - „444:443“
 Containername: lnmp-nginx
 Neustart: immer
 Bände: 
  - ./sites:/www
  - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf
  - ./services/nginx/conf.d:/etc/nginx/conf.d:rw
 Netzwerke:
  lnmp_net:
  IPv4-Adresse: 101.11.11.11

Netzwerke:
 lnmp_net:
 Treiber: Brücke
 ipam:
  Konfiguration:
  - Subnetz: 101.11.11.0/20

Bearbeiten Sie die Datei services/nginx

VON nginx:1.17.0-alpine

# Aktualisieren Sie die Installationsquelle RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# Stellen Sie die Zeitzone auf Shanghai ein. RUN apk update && apk add --upgrade \
 && apk fügt tzdata hinzu \
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "Asien/Shanghai" > /etc/Zeitzone \
 && apk del tzdata

Dienste/PHP-Datei bearbeiten

VON php:7.3.6-fpm-alpine3.9

# Aktualisieren Sie die Installationsquelle RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# Stellen Sie die Zeitzone auf Shanghai ein. RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev\
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "Asien/Shanghai" > /etc/Zeitzone \
 && apk del tzdata \
 && docker-php-ext-install mysqli pdo_mysql opcache \
 && pecl installiere grpc protobuf xdebug yaf yar swoole \
 && Docker-PHP-Ext-Aktivieren von xdebug yaf yar swoole grpc protobuf 

Unsere lnmp-Umgebung ist im Wesentlichen wie oben aufgebaut. Jetzt konfigurieren wir die PHP-Analyse.

Ändern Sie services/nginx/nginx.conf, Sie können es entsprechend Ihren Anforderungen ändern.

Benutzer nginx;
Arbeiterprozesse automatisch;

Fehlerprotokoll /var/log/nginx/error.log warnen;
pid /var/run/nginx.pid;


Ereignisse {
 Arbeiterverbindungen 1024;
}


http {
 /etc/nginx/mime.types einschließen;
 Standardtyp Anwendung/Oktett-Stream;

 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';

 Zugriffsprotokoll /var/log/nginx/access.log Haupt;

 sendfile an;
 #tcp_nopush ein;

 KeepAlive-Timeout 65;

 #gzip ein;

 schließen Sie /etc/nginx/conf.d/*.conf ein;
}

Ändern Sie die Dateien im Verzeichnis services/nginx/conf.d

Dieses Verzeichnis enthält die Konfigurationsdatei für jedes Projekt, in der je nach Bedarf einzelne oder mehrere Dienste konfiguriert werden können.

Server {
 hören Sie 80;
 Servername localhost;

 #Zeichensatz koi8-r;
 #access_log /var/log/nginx/host.access.log main;

  #root /usr/share/nginx/html;
 Wurzel /www;
 index.php index.html index.htm;


 #Fehlerseite 404 /404.html;

 # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
 #
 Fehlerseite 500 502 503 504 /50x.html;
 Standort = /50x.html {
  root /usr/share/nginx/html;
 }

 # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
 #
 #Standort ~ \.php$ {
 # Proxy-Passwort http://127.0.0.1;
 #}

 # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht.
 #
 Standort ~ \.php$ {
 #Wurzel-HTML;
  fastcgi_pass 101.11.11.10:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $Dokumentstammsatz$fastcgi_script_name;
  fastcgi_params einschließen;
 }

 # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis
 # stimmt mit nginx überein
 #
 #Standort ~ /\.ht {
 # alles ablehnen;
 #}
}

Starten des Dienstes

cd php && docker-compose up --build -d

Die Ausführungszeit der obigen Schritte variiert je nach Netzwerkgeschwindigkeit und Docker-Konfiguration. Da einige Erweiterungen in PHP kompiliert sind, können Sie sie auch nach Ihren eigenen Bedürfnissen löschen. Besuchen Sie http://127.0.0.1:81 über den Browser. Wenn Sie die Ausgabeinformationen von phpinfo sehen, herzlichen Glückwunsch, Ihre lnmp-Umgebung wurde bereitgestellt.

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:
  • So erstellen Sie schnell eine LNMP-Umgebung mit Docker (neueste Version)
  • Verwenden Sie Docker, um ein verteiltes lnmp-Image zu erstellen
  • So stellen Sie die LNMP-Architektur im Docker bereit
  • Verwenden Sie Docker, um eine integrierte Service-LNMP-Umgebung zu erstellen
  • Detaillierte Erläuterung zur Verwendung von Docker zum Erstellen einer LNMP-Umgebung
  • Beispiel für die Kompilierung von LNMP im Docker-Container

<<:  So implementieren Sie eine Array-Lazy-Evaluation-Bibliothek in JavaScript

>>:  Eine kurze Diskussion zur MySQL-Indexoptimierungsanalyse

Artikel empfehlen

Vergleich von mydumper und mysqldump in MySQL

Wenn Sie nur ein paar Tabellen oder eine einzelne...

Block- und Zeilenelemente, Sonderzeichen und Verschachtelungsregeln in HTML

Wenn wir die Verschachtelungsregeln grundlegender...

Sicherheitskonfigurationsstrategie für CentOS-Server

In letzter Zeit wurde der Server häufig mit Brute...

Analyse des Problems des Datenverlusts durch erzwungene Aktualisierung von Vuex

vuex-persistenter Zustand Kernprinzip: Alle Vuex-...

Docker startet im Status „Beendet“

Nach dem Docker-Lauf ist der Status immer „Beende...

Detaillierte Erläuterung der allgemeinen Schritte zur SQL-Anweisungsoptimierung

Vorwort In diesem Artikel erfahren Sie hauptsächl...

Implementierungscode zum Betreiben einer MySQL-Datenbank in Golang

Vorwort Golang stellt das Datenbank-/SQL-Paket fü...

Lösung für das Root-Passwort-Anmeldeproblem in MySQL 5.7

Nachdem ich herausgefunden hatte, dass der vorher...

JavaScript realisiert den Drag-Effekt der Modalbox

Hier ist ein Fall des Ziehens einer modalen Box. ...

Vue verwendet Regeln zur Implementierung der Formularfeldvalidierung

Es gibt viele Möglichkeiten, Formularfelder in Vu...