docker-compose, PermissionError: [Errno 13] Отказано в доступе: '/manage.py' - PullRequest
0 голосов
/ 27 июня 2019

После многих исследований я не нашел никакого решения для меня.Я пытаюсь запустить команду в 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'

Мой файл Docker

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"

Я применил предложенное решение, но оно не сработало [ PermissionError: [Errno 13] В доступе отказано: '/ code / manage.py '

Версия Ubuntu:

Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:    18.04
Codename:   bionic

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

В вашем dockerfile вы указываете на нового пользователя dockuser.

RUN adduser -D dockuser
USER dockuser

Следовательно, ваш контейнер будет начинаться с пользователя dockuser, который, кажется, не имеет надлежащих разрешений для запуска./manage.py.

Вы можете либо

  • удалить вышеупомянутые строки, где вы создаете, и указать dockuser.

ИЛИ

  • предоставьте соответствующее разрешение пользователю dockuser, используя команды chown и chmod в файле dockerfile для файла /manage.py.

Я ответил на такой похожий вопрос здесь .

1 голос
/ 27 июня 2019

добавить это к вашему Dockerfile после RUN adduser -D dockuser:

RUN chown dockuser:dockuser -R /app/

и зачем вам COPY файлы, если вы их уже смонтировали?

, если вы хотите сохранитьmount, вам нужно добавить rw persmission в папку в системе HOST, а не в Container

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...