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>
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}
# ...其它代码 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
$ docker-compose up --build
<?php phpinfo();
Build MYSQL
Persistance MYSQLLe service de conteneur Docker a été supprimé pour garantir que les données ne seront pas perduesCréez le dossier /lnmp/data/mysql
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}"
$ docker-compose up
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!