Heim >Backend-Entwicklung >PHP-Tutorial >Tutorial zur Bereitstellung der LNMP-Arbeitsumgebung unter Docker (detaillierte Schritte)
Dieser Artikel enthält ein Tutorial (detaillierte Schritte) zur Bereitstellung der LNMP-Arbeitsumgebung unter Docker. Ich hoffe, dass es hilfreich für Sie ist.
Eine normale PC-Umgebung kann auch die folgende Konfiguration verwenden, ersetzen Sie einfach MYSQL durch die offizielle Version von MySQL.
Docker-Installation
$ curl -sSL get.docker.com | sudo sh
Arbeitsverzeichnis
/lnmp/conf speichert die Konfiguration des virtuellen Hosts
/lnmp/data /mysql Speichert MySQL-Datenbankdaten
/lnmp/log Speichert Nginx- und MySQL-Protokolle
/lnmp/workspace Speichert verschiedene Projektdateien
/lnmp/.env Umgebungsvariablenkonfiguration beim Starten von Docker
/ lnmp/docker-compose.yml Konfigurationsdatei erstellen
/lnmp/php/Dockerfile PHP-Konfigurationsdatei kompilieren
Nginx erstellen
Projekt erstellen
Erstellen Sie zunächst eine statische Datei index.html
/lnmp/workspace/default/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> Hello, Docker! </body> </html>
Bearbeiten Sie die .env-Datei
SOURCE_DIR=./workspace HTTP_HOST=80 NGINX_VERSION=alpine NGINX_CONFD_DIR=./conf/conf.d NGINX_CONF_FILE=./conf/nginx.conf NGINX_LOG_DIR=./log SOURCE_DIR=./workspace workspace文件夹挂载到nginx下的 /var/www/html HTTP_HOST=80 宿主机的80端口映射到nginx下的80端口 NGINX_VERSION=alpine nginx镜像使用alpine版本 NGINX_CONFD_DIR=./conf/conf.d conf.d文件夹挂载到nginx下的/etc/nginx/conf.d NGINX_CONF_FILE=./conf/nginx.conf nginx.conf挂载nginx的 /etc/nginx/nginx.conf NGINX_LOG_DIR=./log
Nginx.conf
Datei /lnmp/conf/nginx.conf erstellen
user nginx; worker_processes 1; pid /var/run/nginx.pid; error_log /var/log/nginx/nginx.error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/nginx.access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
Virtuellen Host konfigurieren
Datei /lnmp/conf/conf.d/default.conf erstellen
Hinweis: Der Pfad unter Root muss mit /var/www/html beginnen, Standard ist unser lokaler A-Ordner unter dem Arbeitsbereich
server { listen 80; server_name localhost default-server; root /var/www/html/default; index index.php index.html index.htm; access_log /var/log/nginx/nginx.localhost.access.log main; error_log /var/log/nginx/nginx.localhost.error.log warn; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
Nginx-Konfiguration erstellen
docker-composer.yml bearbeiten
Die folgenden ${} sind alle in der obigen .env-Datei konfiguriert. Die Variable
version: "3" services: nginx: image: nginx:${NGINX_VERSION} ports: - ${HTTP_HOST}:80 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro - ${NGINX_LOG_DIR}:/var/log/nginx/:rw restart: always
Starten Sie Nginx
Greifen Sie nach dem Ausführen des Befehls auf die IP des Raspberry Pi zu. Normalerweise wird „Hallo, Docker!“ angezeigt.
$ docker-compose up
Build PHP
Bearbeiten Sie /lnmp/.env, um PHP-Build-Variablen hinzuzufügen
PHP_CONFIG_FILE=./conf/php.ini PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
Da die php.ini-Konfiguration etwas lang ist, können Sie sie unter der Adresse unten kopieren
php.ini
php-fpm.conf
Dockerfile hinzufügen
/lnmp/php/Dockerfile
ARG PHP_VERSION FROM php:${PHP_VERSION}-fpm RUN apt update RUN apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ unixodbc-dev \ gcc g++ make autoconf libc-dev pkg-config
Build PHP hinzufügen
Bearbeiten Sie die Datei /lnmp/docker-compose.yml
version: "3" services: nginx: image: nginx:${NGINX_VERSION} ports: - ${HTTP_HOST}:80 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro - ${NGINX_LOG_DIR}:/var/log/nginx/:rw restart: always php: build: context: ./php args: PHP_VERSION: 7.2 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${PHP_PHP_CONFIG_FILE}:/usr/local/etc/php/php.ini:ro - ${PHP_FPM_CONFIG_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw cap_add: - SYS_PTRACE restart: always networks: - default
Der virtuelle Host unterstützt PHP-Parsing
/lnmp/conf/ conf.d/default. conf
Der PHP von fastcgi_pass php:9000 unten bezieht sich auf einen Dienstnamen in docker-compose.yml oben, der verwendet werden kann, um die PHP-Version für ein bestimmtes Projekt anzugeben
#...其它代码 location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Dateien hinzufügen
/lnmp/workspace/default/index.php
<?php echo ‘Hello, PHP!’;
Vorschau starten
Falls noch nicht geschehen Wenn Sie den Prozess zuvor beendet haben, können Sie ihn mit Strg + C beenden. Führen Sie dann den folgenden Befehl aus.
Wenn nichts Unerwartetes passiert, wird die IP beim Zugriff auf den Raspberry Pi „Hallo, PHP!“ anzeigen.
$ docker-compose up
PHP-Erweiterung hinzufügen
/lnmp/.env Hinzufügen Variablen: Das Folgende ist eine Demonstration der Swoole-Erweiterung. Weitere Informationen finden Sie in den folgenden Vorgängen:
PHP_SWOOLE_VERSION=4.2.10
/lnmp/docker-compose.yml. Hinzufügen von Variablen
php: build: context: ./php args: PHP_VERSION: 7.2 PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
/lnmp/php/. Dockerfile Swoole herunterladen und kompilieren
# ...其它代码 ARG PHP_SWOOLE=false RUN if [ ${PHP_SWOOLE} != false ]; then \ curl -O http://pecl.php.net/get/swoole-${PHP_SWOOLE}.tgz -L \ && pecl install swoole-${PHP_SWOOLE}.tgz \ && docker-php-ext-enable swoole \ ;fi
Hinweis: Wenn die Docker-Datei geändert wird, müssen Sie --build hinzufügen und neu kompilieren, sonst wird sie beim Docker-Compose nicht wirksam
$ docker-compose up --build
Bearbeiten Sie /lnmp/workspace/default/index.php und speichern Sie es, greifen Sie auf die IP des Raspberry Pi zu und wie erwartet finden Sie die Swoole-Erweiterung
<?php phpinfo();
MYSQL erstellen
MYSQL-Persistenz
Der Docker-Containerdienst wurde gelöscht, um sicherzustellen, dass keine Daten verloren gehen
Ordner /lnmp/data/mysql erstellen
Bearbeiten Sie die Datei /lnmp/.env und fügen Sie den MySQL-Dienstport, das Anmeldekennwort und den Datenpersistenzordner hinzu.
MYSQL_HOST_PORT=3306 MYSQL_PASSWORD=1234 MYSQL_DATA_DIR=./data/mysql
version: "3" services: #... 其它代码 mysql: image: tobi312/rpi-mysql ports: - ${MYSQL_HOST_PORT}:3306 volumes: - ${MYSQL_DATA_DIR}:/var/lib/mysql:rw environment: MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"
Verwenden Sie nach dem Start das Datenverbindungstool zum Testen, Linkadresse: Raspberry Pi IP-Port: 3306 Benutzername: root Passwort: 1234
$ docker-compose up
Bis jetzt ist Ihre eigene LNMP-Arbeitsumgebung fertig.
Das obige ist der detaillierte Inhalt vonTutorial zur Bereitstellung der LNMP-Arbeitsumgebung unter Docker (detaillierte Schritte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!