Berechtigung zum Zugriff auf das Volume in Docker-Compose verweigert

Berechtigung zum Zugriff auf das Volume in Docker-Compose verweigert

Ich bin gefolgtdieses Tutorialzum Bereitstellen einer Webanwendung mit Django, Gunicorn, Nginx und Postgresql.

Beim Arbeiten mit der leeren Anwendung im Lernprogramm scheint alles in Ordnung zu sein, doch dann habe ich versucht, die gleiche Konfiguration mit meiner Django-App neu zu erstellen und beim Versuch, die statischen Dateien zu erfassen, erhalte ich die Meldung „Zugriff verweigert“.

Die YML-Konfiguration lautet:

version: '3.7'

services:
  postgres:
    image: postgres:11.2-alpine
    volumes:
      - database:/var/lib/postgresql/data
    env_file: .env.pg

  django:
    build: .
    command: gunicorn mysite.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - static:/usr/src/django/static
    expose:
      - 8000
    env_file: .env
    depends_on:
      - postgres

  nginx:
    build: ./nginx
    volumes:
      - static:/usr/src/django/static
    ports:
      - 8009:80
    depends_on:
      - django

volumes:
  database:
  static:

Der Fehler, den ich beim Ausführen erhalte, docker-compose exec django python manage.py collectstatic --clear --noinputist

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  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/contrib/staticfiles/management/commands/collectstatic.py", line 167, in handle
    any(self.storage.listdir(destination_path))
  File "/usr/local/lib/python3.7/site-packages/django/core/files/storage.py", line 315, in listdir
    for entry in os.scandir(path):
PermissionError: [Errno 13] Permission denied: '/usr/src/django/static'

Ich habe versucht, eine Shell innerhalb des Containers auszuführen: Das Verzeichnis „static“ ist dort, wo es sein soll, aber ich kann nichts hineinschreiben (auch nicht als Root). Das Datenbank-Volume im Postgres-Container scheint einwandfrei zu funktionieren, daher denke ich, dass es ein Problem ist, wenn das Volume zwischen zwei Containern geteilt wird.

Irgendeine Idee?

verwandte Informationen