You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dockerfile执行composer install无法创建/vendor目录的权限问题排查

问题分析与解决方案

没错,这就是权限问题。

你的Dockerfile里,COPY . .是在root用户身份下执行的,导致/app目录及其下所有文件的所有者都是root。之后切换到john用户时,这个普通用户没有权限在/app目录下创建vendor文件夹,因此触发报错。

修改Dockerfile的解决步骤

在切换到john用户之前,给john赋予/app目录的所有权即可:

FROM php:7.4.3-cli

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    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

COPY --from=composer:2.4.4 /usr/bin/composer /usr/local/bin/composer

# Set working directory
WORKDIR /app
COPY . . 

# Add a new user "john" with user id 8877
RUN useradd -u 8877 john

# 给john赋予/app目录的所有权
RUN chown -R john:john /app

# Change to non-root privilege
USER john

RUN composer install

额外说明

如果你的Laravel应用后续需要写入storage或bootstrap/cache目录,上面的chown -R john:john /app已经覆盖了这些子目录,无需额外操作。

内容的提问来源于stack exchange,提问作者RedDoumham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:01:07