【问题标题】:Service 'app' failed to build: COPY failed Laravel with Docker服务“应用程序”构建失败:使用 Docker 复制 Laravel 失败
【发布时间】:2019-11-28 14:19:56
【问题描述】:

我正在按照DigitalOcean 的博文为我的 laravel 项目设置 Docker

当我从博客文章的第 8 步运行命令 docker-compose up -d 我收到以下错误:

错误:服务“应用程序”构建失败:复制失败:stat /var/lib/docker/tmp/docker-builder700663646/composer.lock:没有这样的文件或目录

以下是来自 ~/larave.-app/Dockerfile 的配置

FROM php:7.2-fpm

# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/

# Set working directory
WORKDIR /var/www

# Install dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    mysql-client \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl

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

# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd

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

# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www

# Copy existing application directory contents
COPY . /var/www

# Copy existing application directory permissions
COPY --chown=www:www . /var/www

# Change current user to www
USER www

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

谁能帮我解决这个问题?

【问题讨论】:

  • 您确定composer.lock 文件存在于您运行命令的目录中吗?
  • 确保composer,lock 文件存在,如果它不存在,则通过运行composer install 来创建它
  • @PierreB。项目目录下有composer.json文件

标签: laravel docker docker-compose dockerfile


【解决方案1】:

Docker 构建尝试复制不存在的文件 composer.lock 并失败。您忘记运行将生成 composer.lock 文件的步骤:

接下来,使用 Dockers 的 composer 镜像来挂载你的目录 将需要您的 Laravel 项目并避免 全局安装 Composer:

docker run --rm -v $(pwd):/app composer install

教程中没有明确指出,但这会在你的目录中生成一个composer.lock,并允许复制命令正常工作。

【讨论】:

    【解决方案2】:

    刚刚遵循相同的说明(在 Digital Ocean 上),但由于一个小错误而不得不重新执行 - 想我会分享:

    我在他们的说明的第 1 步中错过了冒号 (:) -

    这部分:

    docker run --rm -v $(pwd):/app composer install

    在我用我的目录替换了 $(pwd) 部分之后(通过键入 pwd 并复制粘贴我的目录而不是 $(pwd) - 确保不要删除后面的 :/app

    在我正确完成这一步之后,其余的一切都很顺利。希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 2020-08-09
      • 1970-01-01
      • 2022-09-28
      • 2022-01-10
      • 2020-06-09
      • 2017-02-14
      • 1970-01-01
      相关资源
      最近更新 更多