Переменные PHP в Docker
Переменные PHP передают
сценарию значение,
не зашивая его в файл.
Строка в описании службы
попадает в окружение процесса
и меняет ответ без правки
index.php на диске,
если код уже в образе.
Сценарий читает SITE
и печатает его:
<?php
echo getenv('SITE');
Файл кладут в образ
при сборке.
Том для папки проекта
здесь не нужен -
урок про переменную,
а не про монтирование.
Файл Dockerfile:
FROM php:8.5-fpm
COPY index.php /var/www/html/index.php
Nginx публикует 8080:80
и передаёт запрос в FPM.
Файл default.conf:
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;
}
}
Сервис app
собирается из папки
и получает SITE
со значением demo.
Файл compose.yaml:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
app:
build: .
environment:
SITE: demo
После подъёма в фоне
страница покажет слово
demo без правки
файла в образе.
Запуск проекта:
docker compose up -d --build
Задайте сервису tag переменную LABEL со значением tag и отдайте её текстом страницы на порту 8080.
Сверьте адрес localhost:8080 с заданным значением переменной.