Правка кода на хосте в Docker
Правка кода на хосте
видна странице сразу,
потому что оба контейнера
читают одну папку проекта.
Том связывает каталог
на диске с /var/www/html
внутри копий.
Образы готовые,
сборка не нужна.
Сценарий site/index.php
печатает слово hello:
<?php
echo 'hello';
Nginx принимает браузер
на порту 8080:80
и передаёт .php
в FPM по имени app
и порту 9000.
Файл 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;
}
}
Слева в томе для обоих
сервисов - ./site,
справа - /var/www/html.
Сервис app
без ports.
Файл 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.
После правки текста
в site/index.php
достаточно обновить
страницу в браузере -
перезапуск контейнеров
для этого не нужен.
Запуск проекта:
docker compose up -d
Опишите сервисы edge и fpm с папкой ./public в /var/www/html и ответом edge на порту 8080.
Измените слово в смонтированном index.php и обновите страницу без пересборки образа.