Maison  >  Article  >  développement back-end  >  Tutoriel sur le déploiement de l'environnement de travail LNMP sous Docker (étapes détaillées)

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

不言
不言avant
2019-01-28 09:44:404734parcourir

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

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>

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


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;
}

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;
    }
}

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

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

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

à 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

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

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;
}

Ajouter un fichier

/lnmp/workspace/default/index.php

<?php

echo ‘Hello, PHP!’;

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

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

/lnmp/docker-compose.yml Ajouter des variables

php:
    build: 
      context: ./php
      args:
        PHP_VERSION: 7.2
        PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
/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
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
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();

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
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}"
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
À 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer