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

标签 php laravel docker docker-compose

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

Warning: require(/var/www/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/artisan on line 18 main_system_1 | main_system_1 | Fatal error: require(): Failed opening required '/var/www/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/artisan on line 18 workspace_main_system_1 exited with code 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

这是我的docker-composr.yml文件:
ersion: '3.1'
services:
   main_system:
     build: ./main-system
     ports:
        - 8000:8000
     env_file: ./main-system/.env
   volumes:
       - ./main-system:/var/www

最佳答案

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

关于php - 在Docker容器中运行laravel时找不到autoload.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295895/

相关文章:

php - 在 php 中循环 - 创建不同的卷号

php - SQL查询: Order In month

php - 如何在 Laravel 6 中的文件夹和数据库中删除 1 周后的文件?

php - 调用模型 [App\Team] laravel 6 上的未定义关系 [users]

javascript - 当通过 $argv 传递 JSON 并包含特殊字符时,json_decode 返回 NULL

php - Laravel 驱动未找到,数据库连接错误?

ruby-on-rails - Webpacker 在 Docker/Rails 设置中找不到一些 node_modules

Docker 用于基于 GUI 的环境?

php - 将简单的Dockerfile转换为docker-compose

php静态变量初始化