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

Docker构建Flutter应用遇pubspec.lock权限拒绝错误求助

解决Docker构建Flutter应用时的pubspec.lock权限拒绝问题

问题根源

切换到developer用户后执行COPY命令时,Docker默认会以root权限将文件复制到容器内,导致/home/developer/my_flutter_app目录下的所有文件所有权属于root。而developer用户没有读写这些文件的权限,执行flutter pub get时无法创建或修改pubspec.lock,因此触发权限拒绝错误。

修复方案

方案一:复制时直接指定文件所有权(推荐)

使用Docker的COPY --chown参数,在复制文件时直接将所有权赋予developer用户,无需后续权限修改:

修改Dockerfile中的COPY行:

COPY --chown=developer:developer ./workspace/demo /home/developer/my_flutter_app

完整修改后的Dockerfile:

FROM ubuntu:18.04

# Prerequisites
RUN apt update && apt install -y curl git unzip xz-utils zip libglu1-mesa openjdk-8-jdk wget

# Set up new user
RUN useradd -ms /bin/bash developer
USER developer
WORKDIR /home/developer

# Prepare Android directories and system variables
RUN mkdir -p Android/sdk
ENV ANDROID_SDK_ROOT /home/developer/Android/sdk
RUN mkdir -p .android && touch .android/repositories.cfg

# Set up Android SDK
RUN wget -O sdk-tools.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
RUN unzip sdk-tools.zip && rm sdk-tools.zip
RUN mv tools Android/sdk/tools
RUN cd Android/sdk/tools/bin && yes | ./sdkmanager --licenses
RUN cd Android/sdk/tools/bin && ./sdkmanager "build-tools;29.0.2" "patcher;v4" "platform-tools" "platforms;android-29" "sources;android-29"
ENV PATH "$PATH:/home/developer/Android/sdk/platform-tools"

# Download Flutter SDK
RUN git clone https://github.com/flutter/flutter.git
ENV PATH "$PATH:/home/developer/flutter/bin"

# Run basic check to download Dart SDK
RUN flutter doctor

# Create a directory for your Flutter project
RUN mkdir -p /home/developer/my_flutter_app

# Copy your Flutter project files to the Docker image with correct ownership
COPY --chown=developer:developer ./workspace/demo /home/developer/my_flutter_app

# Set the working directory to your Flutter project
WORKDIR /home/developer/my_flutter_app

# Run Flutter commands to build your app
RUN flutter pub get
RUN flutter build apk

方案二:复制后修改文件权限(兼容旧版Docker)

如果你的Docker版本不支持--chown参数,可临时切换回root用户修改权限,再切回developer:

在COPY命令后添加以下步骤:

# Fix file permissions
USER root
RUN chown -R developer:developer /home/developer/my_flutter_app
USER developer

对应的Dockerfile片段:

# Copy your Flutter project files to the Docker image
COPY ./workspace/demo /home/developer/my_flutter_app

# Fix file permissions
USER root
RUN chown -R developer:developer /home/developer/my_flutter_app
USER developer

# Set the working directory to your Flutter project
WORKDIR /home/developer/my_flutter_app

# Run Flutter commands to build your app
RUN flutter pub get
RUN flutter build apk

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:12:09