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

执行Docker-Compose命令遇PermissionError问题求助

解决Docker中Django startproject权限拒绝错误(PermissionError: [Errno 13])

问题根源

容器内的/app目录由root用户所有,而Dockerfile最后切换到了django-user执行命令,该用户没有/app目录的写入权限,导致django-admin startproject无法创建manage.py文件。

修复方案

方案1:修改Dockerfile(推荐)

在Dockerfile中添加命令,将/app目录的所有者改为django-user,同时修正环境变量的拼写错误:

FROM python:3.9-alpine3.13
LABEL maintainer="Kananappdeveloper"

ENV PYTHONUNBUFFERED 1  # 修正原拼写错误:PYHTONUNBUFFERED → PYTHONUNBUFFERED

COPY ./requirements.txt /tmp/requirements.txt
COPY ./requirements.dev.txt /tmp/requirements.dev.txt
COPY ./app /app
WORKDIR /app
EXPOSE 8000

ARG DEV=false
RUN python -m venv /py && \
    /py/bin/pip install --upgrade pip && \
    /py/bin/pip install -r /tmp/requirements.txt && \
    if [ $DEV = "true" ]; \
        then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
    fi && \
    rm -rf /tmp && \
    adduser \
    --disabled-password \
    --no-create-home \
    django-user && \
    chown -R django-user:django-user /app  # 添加此行,修改目录所有者

ENV PATH="/py/bin:$PATH"

USER django-user

修改后重新构建镜像:

docker-compose build

再执行原命令即可正常创建项目。

方案2:临时以root用户执行命令

若不想重新构建镜像,可临时指定root用户运行命令:

docker-compose run --rm --user root app sh -c "django-admin startproject app ."

执行完成后,需修正本地生成文件的所有者,避免后续权限问题:

sudo chown -R $USER:$USER .

补充说明

之前能正常运行的原因可能包括:镜像构建时未切换到非root用户、当时/app目录权限配置不同,或是本地目录挂载权限发生了变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:45:47