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

Каталог vendor в Docker

Каталог vendor на хосте пустой и затирает библиотеки, которые Composer положил в образ. Том ./site:/var/www/html подменяет весь корень сайта, включая vendor из слоя сборки.

В composer.json задают имя пакета app и пустой require:

{ "name": "app", "require": {} }

Dockerfile копирует Composer, ставит зависимости и оставляет vendor в образе:

FROM php:8.5-fpm COPY --from=composer:2 /usr/bin/composer /usr/bin/composer COPY composer.json /var/www/html/composer.json WORKDIR /var/www/html RUN composer install --no-interaction

Сценарий на диске печатает hello:

<?php echo 'hello';

Nginx передаёт сценарий в FPM по имени app. Файл 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 две строки в volumes: код с ./site и анонимный том на /var/www/html/vendor. Без второй строки пустой vendor с хоста скрывает каталог из образа. Nginx монтирует только папку сайта. Файл 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 - /var/www/html/vendor

Подъём с пересборкой поднимет связку: код с диска и vendor из образа в отдельном томе. Запуск проекта:

docker compose up -d --build

Соберите сервис lib с установкой Composer в образе и двумя томами у PHP, чтобы vendor не затирался с хоста.

Откройте localhost:8080 и проверьте ответ hello.

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