Том монтируется в время выполнения , а не в build время.
Когда вы создаете образ, там нет composer.json
, потому что ваш Том еще не был подключен.
Перед запуском composer install
вам необходимо скопировать всех необходимых файлов для процесса сборки.
Например, лучше Dockerfile
было бы что-то вроде этого:
(в данном случае я привожу Symfony файлы, так как это скопировано с Symfony изображения)
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get upgrade -y \
&& apt-get install -y git libzip-dev unzip \
&& docker-php-ext-install \
pdo_mysql zip \
&& docker-php-ext-enable \
pdo_mysql zip
RUN mkdir -p /var/www/html/api
WORKDIR /var/www/html/api
COPY composer.json composer.lock symfony.lock .env.dist ./
RUN composer install \
&& bin/console make:migration
Это не только на самом деле будет работать, но генерировать разные уровни для построения вашего приложения и установки требований платформы. При этом изменения в composer.json
не приведут к переустановке расширений PHP и обновлению apt.