问题
After doing many research I didn't found any solution worked for me. I am trying to run command in docker-composer to start project with django-admin
docker-compose run app sh -c "django-admin startproject app ."
Every time I am getting the error:
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'
My docker file
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
My 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"
I applied solution suggested in but it didn't worked [PermissionError: [Errno 13] Permission denied: '/code/manage.py'
Ubuntu version :
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
回答1:
In your dockerfile
, you are pointing to a new user dockuser
.
RUN adduser -D dockuser
USER dockuser
Hence your container will start with user dockuser
which don't seems to have proper permissions to run /manage.py
.
You can either
- remove the above mentioned lines where you creates and point to
dockuser
.
OR
- provide appropriate permission to user
dockuser
usingchown
andchmod
commands in your dockerfile for /manage.py file.
I have answered such similar question here.
回答2:
add this to your Dockerfile
after RUN adduser -D dockuser
:
RUN chown dockuser:dockuser -R /app/
and why you COPY
the files if you already mount them ?
if you want to keep the mount , you need to add rw
persmission on the folder on the HOST
system not on the Container
回答3:
If you're on mac this might work for you.
After 4 days of troubleshooting this error (and other strange errors) I found out that I needed to fix dockers permissions in my file system. To do this go to:
System Preferences -> Security & Privacy -> Privacy tab -> Full Disk Access (on the left, somewhere in the list) -> Click on the + -> Docker application
Terribly frustrating problem to debug, hope it helps.
来源:https://stackoverflow.com/questions/56784492/docker-compose-permissionerror-errno-13-permission-denied-manage-py