Файл настроек в Docker
Файл настроек заменяет стандартный сайт nginx
и говорит, куда отправлять файлы PHP.
Без своего default.conf
образ отдаёт только статику
из каталога по умолчанию
и не знает про app:9000.
Конфиг монтируют поверх
/etc/nginx/conf.d/default.conf,
и nginx при старте читает
ваш виртуальный хост.
Короткий полный файл
для связки с FPM такой:
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;
}
}
Сервис web
монтирует конфиг и папку сайта,
сервис app
- только ./site
в /var/www/html.
Сценарий печатает 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
Перенесите конфиг в ./nginx/site.conf, подключите его к сервису proxy и добейтесь ответа ok на порту 8083.
Проверьте страницу в браузере и сравните с текстом в index.php.