Как исправить ошибку mkdir в докеризованном ap на ec2?
У меня есть приложение django, основанное на django-cookiecutter, работающее на aws-ec2.
Само приложение создано и работает нормально. Это приложение использует библиотеку django-cities-light.
Когда я запускаю docker-compose -f production.yml run --rm django python manage.py cities_light
, которая является командой для заполнения базы данных странами/городами, я получаю следующую ошибку:
INFO 2021-11-30 15:17:36,780 cities_light 1 140562076800832 Creating /usr/local/lib/python3.9/site-packages/cities_light/data
Traceback (most recent call last):
File "/app/manage.py", line 31, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.9/site-packages/cities_light/management/commands/cities_light.py", line 145, in handle
os.mkdir(DATA_DIR)
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.9/site-packages/cities_light/data'
ERROR: 1
Поскольку '/usr/local/lib/python3.9/site-packages/cities_light/data' находится внутри докера, я очень запутался в том, какие разрешения я должен установить и кому.
Если кто-то может пролить свет, буду очень признателен.
Спасибо!
Убедитесь, что пользователь внутри контейнера имеет достаточное разрешение для '/usr/local/lib/python3.9/site-packages/cities_light/data'
.
Если у вас есть non-root пользователь внутри контейнера, убедитесь, что этот пользователь владеет/имеет доступ к папке. Также загляните в this
Спасибо Виноту за предложения. Они были полезны.
Я немного почитал и изменил право собственности на папку на django (пользователь:группа), добавив
RUN chown -R django:django /usr/local/lib/python3.9/site-packages/*
в файл docker устранил проблему.