在docker容器中运行laravel时找不到autoload.php

我正在尝试在 docker 容器上运行 laravel。但是,我创建了一个 docker 文件来安装所需的依赖项和扩展。然后,我创建了一个 docker-compose 文件来运行容器。但是,当使用docker-compose up以下错误运行容器时会出现:


警告:要求(/var/www/vendor/autoload.php):无法打开流:第 18 行 main_system_1 | 上的 /var/www/artisan 中没有这样的文件或目录 | main_system_1 | 致命错误:require():在第 18 行的 /var/www/artisan 中打开所需的 '/var/www/vendor/autoload.php' (include_path='.:/usr/local/lib/php') 失败,已退出带代码 255


Dockerfile:


FROM php:alpine


# Install dev dependencies

RUN apk add --no-cache --virtual .build-deps \

    $PHPIZE_DEPS \

    curl-dev \

    imagemagick-dev \

    libtool \

    libxml2-dev \

    postgresql-dev \

    sqlite-dev


# Install production dependencies

RUN apk add --no-cache \

    bash \

    curl \

    g++ \

    gcc \

    git \

    imagemagick \

    libc-dev \

    libpng-dev \

    make \

    mysql-client \

    nodejs \

    nodejs-npm \

    yarn \

    openssh-client \

    postgresql-libs \

    rsync \

    zlib-dev \

    libzip-dev


# Install PECL and PEAR extensions

RUN pecl install \

    imagick


# Install and enable php extensions

RUN docker-php-ext-enable \

    imagick

RUN docker-php-ext-configure zip --with-libzip

RUN docker-php-ext-install \

    curl \

    iconv \

    mbstring \

    pdo \

    pdo_mysql \

    pdo_pgsql \

    pdo_sqlite \

    pcntl \

    tokenizer \

    xml \

    gd \

    zip \

    bcmath


# Install composer

ENV COMPOSER_HOME /composer

ENV PATH ./vendor/bin:/composer/vendor/bin:$PATH

ENV COMPOSER_ALLOW_SUPERUSER 1

RUN curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer


# Install PHP_CodeSniffer

RUN composer global require "squizlabs/php_codesniffer=*"


# Cleanup dev dependencies

RUN apk del -f .build-deps


# Setup working directory

WORKDIR /var/www


COPY composer.json composer.json

#COPY composer.lock composer.lock

RUN composer install --no-autoloader

COPY . .

RUN composer dump-autoload


RUN php artisan key:generate

RUN php artisan jwt:secret

RUN chmod 777 -R storage


CMD php artisan serve --host=0.0.0.0 --port=8000

EXPOSE 8000



斯蒂芬大帝
浏览 319回答 2
2回答

MM们

您的 dockerfile 运行compose install --no-autoloader. 这可能是问题所在。

慕婉清6462132

我通过以下方式解决了问题:从 docker-compose.yml 中删除卷更改COPY . .命令的顺序并将其放在前面RUN composer install删除 --no-autoloader
打开App,查看更多内容
随时随地看视频慕课网APP