我尝试在docker-composer
中运行以下命令,以django-admin
启动项目:
docker-compose run app sh -c "django-admin startproject app ."
这会产生错误:
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'
停靠文件如下:
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
我的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"
我应用了this Stack Overflow thread中建议的解决方案,但它不起作用。
我用的是Ubuntu 18.04。
9条答案
按热度按时间yk9xbfzb1#
ubuntu 21.04版本
我来这里寻找
PermissionError: [Errno 13] Permission denied:
,所以我就把这个留在这里。**注意:**以下答案不适用于多用户系统... see this answer instead for another possible solution
如果你想设置它,忘记它为1个用户,你自己的用户...这里是我在我的开发机器上。
我不拥有unix socket,所以我改变了它。(这让它立即工作)
另一个更持久的解决方案是修改unix socket创建的用户所有权,这将给予用户所有权,这样它将在两次重新启动之间保持不变:
docker.socket:
还有另一个不那么老套的解决方案:https://stackoverflow.com/a/70124863/2026508
puruo6ea2#
在
dockerfile
中,您指向一个新用户dockuser
。因此,您的容器将以用户
dockuser
开始,该用户似乎没有运行/manage.py
的适当权限。您可以
dockuser
的行。或
chown
和chmod
命令为用户dockuser
提供适当的权限manage.py。我已经回答了类似的问题here。
carvr3hs3#
我遇到了同样的问题,并通过将我的用户添加到
docker
组来解决它:wlzqhblo4#
将以下内容添加到
RUN adduser -D dockuser
之后的Dockerfile
中:如果已经挂载了文件,为什么还要对它们执行
COPY
操作?如果要保留挂接,则需要在
HOST
系统上的文件夹上而不是在Container
上添加rw
权限uxh89sit5#
如果你在mac上,这可能对你有用。
经过4天的故障排除这个错误(和其他奇怪的错误),我发现我需要修复我的文件系统中的dockers权限。要做到这一点,请访问:
系统首选项-〉安全与隐私-〉隐私选项卡-〉全磁盘访问(在左侧,列表中的某个位置)-〉单击+ -〉Docker应用程序
非常令人沮丧的问题调试,希望它有所帮助。
d5vmydt96#
我使用的Dockerfile位于我的虚拟机(VirtualBox)的共享目录中。因此,我的问题与此目录的默认权限有关(UID=root,GID=vboxdf)。我必须将其更改为我的当前用户才能正确运行我的容器。
有关如何更改所有者的说明,请参见https://superuser.com/a/640028/1655184。
dgtucam17#
对我来说,这是一个WSL 2/ Docker-Desktop在Windows上的安装问题。
缺少的是显式启用WSL发行版:Docker桌面设置〉资源〉WSL集成〉启用您的发行版
然后重新打开WSL shell。
以前我甚至不能做
docker run hello-world
,但也有一个非常类似的错误消息,作为操作程序时,运行docker-compose。cvxl0en28#
在docker-compose中添加“/home/user/app:/app”这样的应用程序路径,而不仅仅是".:/app",这解决了我的问题
qvtsj1bj9#
对于ubuntu,只需将sudo添加到命令中,然后以root身份运行即可获得权限。
sudo docker-compose run app sh -c "django-admin startproject app ."