Разрешено доступ к тому в docker-compose
Я следовал этому руководству по развертыванию веб-приложений с использованием django, gunicorn, nginx и postgresql.
При работе с пустым приложением в учебнике все выглядит нормально, но затем я попытался воссоздать ту же конфигурацию, используя свое приложение Django, и я получил "отказано в разрешении" при попытке собрать статические файлы.
Конфигурация yml:
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:
Ошибка, которую я получаю при выполнении docker-compose exec django python manage.py collectstatic --clear --noinput
является
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'
Я попытался выполнить оболочку внутри контейнера: "статический" каталог находится там, где он должен быть, но я ничего не могу в нем записать (даже с правами root). Том базы данных в контейнере postgres, кажется, работает нормально, поэтому я думаю, что это проблема при разделении тома между двумя контейнерами.
Любая идея?