Связка Nginx и PHP в Docker
Связка Nginx и PHP отдаёт страницу сценария:
веб-сервер принимает браузер,
а интерпретатор считает файл.
Nginx отдаёт статику сам,
а для .php
передаёт путь в FPM
по имени сервиса app
и порту 9000.
Сервис web
на образе nginx
публикует 8080:80.
Сервис app
на php:8.5-fpm
без ports.
Оба монтируют ./site
в /var/www/html,
а свой default.conf
подменяет стандартный сайт nginx:
server {
listen 80;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Сценарий печатает слово
hello:
<?php
echo 'hello';
Тома и монтирование конфига
собраны в compose.yaml:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./site:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
app:
image: php:8.5-fpm
volumes:
- ./site:/var/www/html
После подъёма в фоне
localhost:8080
покажет в браузере
слово hello.
Запуск проекта:
docker compose up -d
Соберите пару сервисов edge и core с ответом live на порту 8082 и общей папкой ./public.
Проверьте текст страницы по localhost:8082.