Задать вопрос
@Now159

Как установить композер в контейнер докера?

FROM php:8.2-fpm

# Install dependencies
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]


Warning: require(/var/www/html/public/../vendor/autoload.php): Failed to open stream: No such file or directory in /var/www/html/public/index.php on line 14

Fatal error: Uncaught Error: Failed opening required '/var/www/html/public/../vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/html/public/index.php:14 Stack trace: #0 {main} thrown in /var/www/html/public/index.php on line 14
  • Вопрос задан
  • 273 просмотра
Подписаться 2 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
W1DO_DIGITAL
@W1DO_DIGITAL
Senior Tech Lead | AI Solution Architect | Founder
Ошибка вызвана тем, что в вашем Dockerfile отсутствует стадия копирования исходного кода проекта и запуск composer install для генерации папки vendor. Образ содержит бинарный файл Composer, но не выполняет установку зависимостей, поэтому PHP не находит файл автозагрузки в рабочей директории контейнера. Добавьте в Dockerfile инструкции COPY . /var/www/html и RUN composer install, либо убедитесь, что локальная папка с проектом правильно монтируется в контейнер через volumes в docker-compose.yml.

Возьмите мой DockerFile, удалите лишнее

FROM php:8.4-cli-bookworm AS builder

ARG USER_ID=1002
ARG GROUP_ID=1002
RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data

RUN apt-get update && apt-get install -y \
    git curl libpng-dev libonig-dev libxml2-dev zip unzip \
    libbrotli-dev libssl-dev libcurl4-openssl-dev pkg-config build-essential \
    libpq-dev \
    && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
    && apt-get install -y nodejs \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install pdo_mysql pdo_pgsql mbstring pcntl bcmath gd

RUN cd /tmp && git clone https://github.com/swoole/swoole-src.git && \
    cd swoole-src && phpize && ./configure --enable-openssl --enable-http2 && \
    make -j$(nproc) && make install
RUN cd /tmp && git clone https://github.com/phpredis/phpredis.git && \
    cd phpredis && phpize && ./configure && \
    make -j$(nproc) && make install

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY . /var/www/html

RUN composer install --no-dev --optimize-autoloader --ignore-platform-reqs --no-interaction

RUN php artisan octane:install --server=swoole

RUN npm install && npm install --save-dev chokidar && npm run build

FROM php:8.4-cli-bookworm

USER root

RUN apt-get update && apt-get install -y \
    libpng16-16 libcurl4 libssl3 curl supervisor libpq5 \
    && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
    && apt-get install -y nodejs \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions
COPY --from=builder /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d
RUN docker-php-ext-enable opcache swoole redis pdo_pgsql

WORKDIR /var/www/html

COPY --from=builder --chown=www-data:www-data /var/www/html /var/www/html
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache && \
    chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache

EXPOSE 8080 8008

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы