РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcPhDvRb 22 of 30 menu
◀ ▶

Пересборка образа в Docker

Пересборка образа нужна, когда меняется файл сборки, а не текст сценария на диске. Строка RUN в Dockerfile попадает в слой шаблона; правка site/index.php на томе сборку не затрагивает.

Сценарий на хосте печатает hello:

<?php echo 'hello';

В Dockerfile одна строка RUN фиксирует метку слоя; её меняют при учебной пересборке:

FROM php:8.5-fpm RUN echo build-step-1 > /tmp/build-id.txt

Nginx на готовом образе, PHP собирается из папки. Код монтируют с ./site. Файл 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; } }

Файл compose.yaml:

services: web: image: nginx ports: - "8080:80" volumes: - ./site:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf app: build: . volumes: - ./site:/var/www/html

Подъём в фоне задают командой docker compose up с флагом --build, который заново прогоняет шаги образа, и флагом -d. После смены текста в RUN нужен такой подъём; правка index.php на томе его не требует. Запуск проекта:

docker compose up -d --build

Смените метку в единственной команде сборки у сервиса core и снова поднимите проект в фоне так, чтобы образ собрался заново.

Измените слово в index.php на томе и убедитесь, что страница обновилась без новой сборки.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить