php - 找不到供应商目录

标签 php docker composer-php

我正在尝试使用以下Dockerfile构建Docker镜像:

FROM php:7.1-fpm

# Install server packages
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
     htop \
     nano \
     mc \
     wget \
     cron \
     bzip2 \
     optipng \
     jpegoptim \
     imagemagick \
     supervisor \
     # for php extensions
     libpq-dev \
     libzip-dev \
     libfreetype6-dev \
     libjpeg62-turbo-dev \
     libmcrypt-dev \
     libpng12-dev \
     libmagickwand-dev

# Install php packages
RUN docker-php-source extract \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install pgsql pdo_pgsql bcmath zip gd mcrypt opcache \
    && pecl install imagick \
    && docker-php-ext-enable imagick

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

WORKDIR /app
COPY src /app

RUN usermod -u 1001 www-data \
    && chown -R www-data .

# Setup
COPY env/docker/app/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY env/docker/app/php.ini /usr/local/etc/php/

COPY env/docker/app/crontab /var/app/
RUN mkdir -p /var/log/cron
RUN crontab /var/app/crontab

COPY env/docker/app/starter.sh /var/app/

RUN chmod 777 /var/app

ENTRYPOINT ["/var/app/starter.sh"]

然后,我将创建的docker镜像推送到我们使用的RedHat Openshift环境中。

但是,当我加载Web应用程序时,出现以下错误
Warning: require(/app/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /app/bootstrap/autoload.php on line 17
当我检查OpenShift上的Pod时,没有Vendor目录,因此看来 Composer 没有正常工作。有任何想法吗?

如果相关,我正在使用Vagrant和Centos 7在Windows 7计算机上进行docker构建。

最佳答案

该docker镜像必须使用安装了依赖项的应用程序构建。此处的依赖项是composer软件包。因此,在构建镜像之前,必须执行命令

composer install



在包含文件 composer.json 的目录中。

然后,您构建您的Docker镜像。

关于php - 找不到供应商目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981564/

相关文章:

php - 关于更新数据库的MySQL错误消息

architecture - 如何在不同机器上运行docker容器

php - 克安普 : composer installation issue: module openssl already loaded in Unknown on line 0

php - 如何使用 paypal 以编程方式退款?

php - 是否有一种标准的方法来处理与 PHP 中的条件分开的设计 (CSS)?

javascript - 将 JSON 字符串发布到 PHP 页面

php - 让 Composer (php 依赖管理器)在 docker 镜像构建上运行

docker - 与docker-compose.yml一起使用时未执行Dockerfile中的命令

docker-compose up <service> 无法正确启动 <service>

laravel - 安装 Laravel 时 Composer 错误 "Failed to decode response: zlib_decode(): data error"