docker-compose , PermissionError: [Errno 13] 权限被拒绝: '/manage.py'

Anu*_*dra 16 python django django-admin docker docker-compose

在做了很多研究之后,我没有发现任何对我有用的解决方案。我正在尝试在 docker-composer 中运行命令以使用 django-admin 启动项目

docker-compose run app sh -c "django-admin startproject app ."
Run Code Online (Sandbox Code Playgroud)

每次我收到错误时:

    Traceback (most recent call last):
  File "/usr/local/bin/django-admin", line 10, in <module>
    sys.exit(execute_from_command_line())
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/startproject.py", line 20, in handle
    super().handle('project', project_name, target, **options)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/templates.py", line 155, in handle
    with open(new_path, 'w', encoding='utf-8') as new_file:
PermissionError: [Errno 13] Permission denied: '/manage.py'
Run Code Online (Sandbox Code Playgroud)

我的码头文件

FROM python:3.7-alpine
MAINTAINER anubrij chandra

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt

RUN pip install -r /requirements.txt

RUN mkdir /app
COPY ./app /app



RUN adduser -D dockuser
USER dockuser
Run Code Online (Sandbox Code Playgroud)

我的 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"
Run Code Online (Sandbox Code Playgroud)

我应用了建议的解决方案,但没有奏效 [ PermissionError: [Errno 13] Permission denied: '/code/manage.py'

Ubuntu 版本:

Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:    18.04
Codename:   bionic
Run Code Online (Sandbox Code Playgroud)

wvd*_*oot 14

我遇到了同样的问题,并通过将我的用户添加到docker组中来解决它:

$ sudo usermod -aG docker $(whoami)
Run Code Online (Sandbox Code Playgroud)

  • 注意:这不会在您的运行会话中生效 – 您需要重新登录。 (10认同)

mch*_*wre 12

在您的 中dockerfile,您指向一个新用户dockuser

RUN adduser -D dockuser
USER dockuser
Run Code Online (Sandbox Code Playgroud)

因此,您的容器将以dockuser似乎没有适当权限运行的用户开始/manage.py

你可以

  • 删除您创建并指向的上述行 dockuser

或者

  • 为 /manage.py 文件的 dockerfile 中的用户dockuser使用chownchmod命令提供适当的权限。

在这里回答了类似的问题。


jmu*_*sch 12

Ubuntu 21.04

我来这里是为了寻找,PermissionError: [Errno 13] Permission denied:所以我就把这个留在这里。

我不拥有 unix 套接字,所以我把它扔掉了。

sudo chown $(whoami):$(whoami) /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

对于您的开发环境,另一个更永久的解决方案是修改 unix 套接字创建的用户所有权。这将为您的用户提供所有权,因此它将在重新启动之间保持不变:

sudo nano /etc/systemd/system/sockets.target.wants/docker.socket
Run Code Online (Sandbox Code Playgroud)

docker.socket:

[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=YOUR_USERNAME_HERE
SocketGroup=docker

[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)

  • 其他对我都没用,谢谢你列出来! (2认同)
  • 10星,解决了我的问题 (2认同)

Lin*_*nPy 7

将其添加到您的Dockerfile之后RUN adduser -D dockuser

RUN chown dockuser:dockuser -R /app/
Run Code Online (Sandbox Code Playgroud)

以及为什么你COPY还要安装这些文件?

如果要保留挂载,需要给系统rw上的文件夹添加权限,HOST而不是给系统上的文件夹添加权限Container