Так что теперь вы можете легко запустить composer install в dockerfile, и когда docker монтирует ваш том, он будет игнорировать каталог vendor.
я есть следующий Dockerfile для выполнения PHP на основе официального[php][1]
образ.
FROM php:fpm
WORKDIR /var/www/root/
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
zip \
unzip \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli \
&& docker-php-ext-enable opcache \
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer
У меня проблемы с бегомcomposer install
.
Я предполагаю, что Dockerfile запускается до монтирования тома, потому что я получаюcomposer.json
файл не найден ошибка при добавлении:
...
&& mv composer.phar /usr/local/bin/composer \
&& composer install
к вышесказанному.
Но, добавив следующее свойствоdocker-compose.yml
:
command: sh -c "composer install && composer require drush/drush"
кажется, завершить контейнер после завершения выполнения команды.
Есть ли способ:
подождите, пока том не станет подключеннымбежатьcomposer install
используя установленныйcomposer.json
файлпусть контейнер продолжает работать после?