Tutoriel sur le déploiement de l'environnement de travail LNMP sous Docker (étapes détaillées)

不言
Libérer: 2023-04-04 21:24:02
avant
4761 Les gens l'ont consulté

Cet article vous propose un tutoriel (étapes détaillées) sur le déploiement de l'environnement de travail LNMP sous Docker. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

L'environnement PC ordinaire peut également utiliser la configuration suivante, remplacez simplement MYSQL par la version officielle de MySQL.

Installation de Docker

$ curl -sSL get.docker.com | sudo sh
Copier après la connexion

Répertoire de travail

/lnmp/conf stocke la configuration de l'hôte virtuel
/lnmp /data/mysql Stocke les données de la base de données MySQL
/lnmp/log Stocke les journaux nginx et MySQL
/lnmp/workspace Stocke divers fichiers de projet

/lnmp/.env Configuration des variables d'environnement lors du démarrage de Docker
/lnmp/docker-compose.yml Construire le fichier de configuration
/lnmp/php/Dockerfile Compiler le fichier de configuration PHP

Construire Nginx

Créer un projet

Créez d'abord un fichier statique 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>
Copier après la connexion

Ajoutez des variables d'environnement pendant la construction

Modifiez le fichier .env

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
Copier après la connexion


Nginx.conf

Créer le fichier /lnmp/conf/nginx.conf

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;
}
Copier après la connexion

Configurer l'hôte virtuel

Créer le fichier /lnmp/conf/conf.d/default.conf
Remarque : Le chemin sous racine doit être /var/www /html, la valeur par défaut est un sous notre espace de travail local

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;
    }
}
Copier après la connexion

Construire la configuration Nginx

Modifier docker-composer.yml
Les $ {} suivants sont toutes les variables configurées dans le . env ci-dessus

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
Copier après la connexion

Démarrez Nginx

Après avoir exécuté la commande, accédez à l'IP du Raspberry Pi Si c'est normal, elle s'affichera Bonjour, Docker !

$ docker-compose up
Copier après la connexion
Copier après la connexion
Copier après la connexion

Construisez PHP

Modifiez /lnmp/.env pour ajouter des variables de construction PHP

PHP_CONFIG_FILE=./conf/php.ini
PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
Copier après la connexion

à cause de php.ini La configuration est un peu longue, vous pouvez la copier à l'adresse suivante :
php.ini
php-fpm.conf

Ajouter un Dockerfile

/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
Copier après la connexion

Ajouter une build PHP

Modifier le fichier /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
Copier après la connexion

L'hôte virtuel prend en charge l'analyse PHP

/lnmp/conf/conf.d/default.conf
Le php de fastcgi_pass php:9000 ci-dessous fait référence à un nom de service dans docker-compose.yml ci-dessus, qui peut être utilisé pour cibler une certaine version de PHP pour chaque projet

#...其它代码

location ~ \.php$ {
    fastcgi_pass   php:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}
Copier après la connexion

Ajouter un fichier

/lnmp/workspace/default/index.php

<?php

echo ‘Hello, PHP!’;
Copier après la connexion

Démarrer l'aperçu

Si vous n'avez pas terminé le processus auparavant, vous pouvez le terminer avec ctrl + c puis exécuter la commande suivante.
Si rien d'inattendu ne se produit, l'adresse IP lors de l'accès au Raspberry Pi affichera Hello, PHP !.

$ docker-compose up
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ajouter une extension PHP

/lnmp/. env Ajoutez des variables, utilisez swoole pour développer la démonstration ci-dessous. Pour d'autres extensions, veuillez vous référer aux opérations suivantes

PHP_SWOOLE_VERSION=4.2.10
Copier après la connexion

/lnmp/docker-compose.yml Ajouter des variables

php:
    build: 
      context: ./php
      args:
        PHP_VERSION: 7.2
        PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
Copier après la connexion
/lnmp/php/ Dockerfile Téléchargez et compilez swoole

# ...其它代码
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
Copier après la connexion
Recompilez

Remarque : Si le Dockerfile est modifié, vous devez ajouter --build et le recompiler, sinon cela ne prendra pas effet lorsque docker-compose up

$ docker-compose up --build
Copier après la connexion
Aperçu

Modifiez /lnmp/workspace/default/index.php et enregistrez-le, accédez à l'adresse IP du Raspberry Pi, et comme prévu vous pouvez trouvez l'extension swoole

<?php

phpinfo();
Copier après la connexion

Build MYSQL

Persistance MYSQL

Le service de conteneur Docker a été supprimé pour garantir que les données ne seront pas perdues

Créez le dossier /lnmp/data/mysql

Variables au moment de la construction

Modifiez le fichier /lnmp/.env et ajoutez le port du service mysql, le mot de passe de connexion et le dossier de persistance des données.

MYSQL_HOST_PORT=3306
MYSQL_PASSWORD=1234
MYSQL_DATA_DIR=./data/mysql
Copier après la connexion
Configuration de construction

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}"
Copier après la connexion
Démarrage

Après le démarrage, utilisez l'outil de connexion de données pour tester, adresse du lien : Port IP Raspberry Pi : 3306 Nom d'utilisateur : root Mot de passe : 1234

$ docker-compose up
Copier après la connexion
Copier après la connexion
Copier après la connexion
À ce stade, votre propre environnement de travail LNMP est prêt.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal