【发布时间】:2021-04-12 14:50:30
【问题描述】:
我在尝试运行 docker-compose 命令时遇到权限问题
docker-compose run app sh -c "django-admin.py startproject app ."
错误:
PermissionError: [Errno 13] Permission denied: '/app/manage.py'
我做了一些研究,在这里发现了一个类似的问题:docker-compose , PermissionError: [Errno 13] Permission denied: '/manage.py'
但是,当我尝试更改 Dockerfile 中的权限时,我认为我做错了
Dockerfile:
FROM python:3.8-alpine
MAINTAINER Nick
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN mkdir /app
WORKDIR /app
COPY ./app /app
RUN adduser -D user
RUN chown user:user -R /app/
RUN chmod +x /app
USER user
我添加RUN chown user:user -R /app/和RUN chmod +x /app
运行docker build . 成功,但我仍然遇到权限问题
docker-compose.yml
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app /app
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"
【问题讨论】:
-
您好 Nick,您是否尝试过在没有最后四个运行命令的情况下构建 Dockerfile?入口点或 cmd 行呢?您是否在帖子中添加了整个 Dockerfile?
-
我没有尝试在没有最后四个命令的情况下构建文件。我已经阅读了创建新用户的最佳做法,以便图像不使用 root 用户。此外,我在这篇文章中的 docker 文件中包含了所有内容。
-
感谢您的反馈,我这里有点疑问。您是否从 macOS 测试了该 docker 构建?确保您正确设置了这些设置。系统偏好设置 -> 安全和隐私 -> 隐私选项卡 -> 全盘访问(在左侧,在列表中的某处) -> 点击 + -> Docker 应用程序
-
你正在做
chown user:user -R /app/然后在你的docker compose中运行时在/app之上安装一个文件夹。如果你认为你的镜像中做的chown会对之后挂载的文件有影响,那你就错了。