1

I run docker-compose command and get "PermissionDenied" error. I have used the same code about 2 month ago and it worked perfectly. I have searched internet and solutions didn't help much.

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

And it gives me an error:

    Traceback (most recent call last):
  File "/py/bin/django-admin", line 8, in <module>
    sys.exit(execute_from_command_line())
  File "/py/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/py/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/py/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/py/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/py/lib/python3.9/site-packages/django/core/management/commands/startproject.py", line 21, in handle
    super().handle('project', project_name, target, **options)
  File "/py/lib/python3.9/site-packages/django/core/management/templates.py", line 160, in handle
    with open(new_path, 'w', encoding='utf-8') as new_file:
PermissionError: [Errno 13] Permission denied: '/app/manage.py'

My Dockerfile is :

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

ENV PYHTONUNBUFFERED 1

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

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

USER django-user

My OS is Ubuntu 22.04

Thank you in advance.

1 Answers1

0

Check the username of the creator of the folder app using the command ll. Then find out the user id of the user.

Then create the user in Docker with that id using

adduser \
       -u $ \
       --disabled-password \
       --no-create-home \
       django-user

Then build docker.

buddemat
  • 4,552
  • 14
  • 29
  • 49