Так что теперь вы можете легко запустить 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 файлпусть контейнер продолжает работать после

?

Ответы на вопрос(0)

Ваш ответ на вопрос