Heim > Backend-Entwicklung > PHP-Tutorial > Tutorial zur Bereitstellung der LNMP-Arbeitsumgebung unter Docker (detaillierte Schritte)

Tutorial zur Bereitstellung der LNMP-Arbeitsumgebung unter Docker (detaillierte Schritte)

不言
Freigeben: 2023-04-04 21:24:02
nach vorne
4795 Leute haben es durchsucht

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

Fügen Sie Umgebungsvariablen während des Builds hinzu

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
Nach dem Login kopieren


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;
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Dateien hinzufügen

/lnmp/workspace/default/index.php

<?php

echo ‘Hello, PHP!’;
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

/lnmp/docker-compose.yml. Hinzufügen von Variablen

php:
    build: 
      context: ./php
      args:
        PHP_VERSION: 7.2
        PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
Nach dem Login kopieren

/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
Nach dem Login kopieren

Neu kompilieren

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
Nach dem Login kopieren

Vorschau

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();
Nach dem Login kopieren

MYSQL erstellen

MYSQL-Persistenz

Der Docker-Containerdienst wurde gelöscht, um sicherzustellen, dass keine Daten verloren gehen
Ordner /lnmp/data/mysql erstellen

Variablen zur Erstellungszeit

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
Nach dem Login kopieren

Konfiguration erstellen

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}"
Nach dem Login kopieren

Starten

Verwenden Sie nach dem Start das Datenverbindungstool zum Testen, Linkadresse: Raspberry Pi IP-Port: 3306 Benutzername: root Passwort: 1234

$ docker-compose up
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage