Fix media file storage path and permissions

- Fix MEDIA_ROOT path to match Docker volume mount (/app/myproject/media)
- Update docker-compose.yml volume mounts to match MEDIA_ROOT
- Add setup_directories() function in entrypoint.sh to create media directories with proper permissions
- Add logging to TenantAwareFileSystemStorage for debugging
- Fix is_returned flag logic improvements (from previous work)
This commit is contained in:
2025-12-21 16:54:44 +03:00
parent a55be3095b
commit 812ecb53e6
7 changed files with 241 additions and 20 deletions

View File

@@ -103,6 +103,30 @@ except Exception as e:
echo "Redis is up!"
}
# Создание папок media и staticfiles с правильными правами
setup_directories() {
echo "Setting up media and static directories..."
# Определяем пути (в Docker BASE_DIR = /app, поэтому MEDIA_ROOT = /app/myproject/media)
MEDIA_ROOT="/app/myproject/media"
STATIC_ROOT="/app/myproject/staticfiles"
# Создаем папки если их нет (рекурсивно)
# Важно: создаем структуру папок для tenants
mkdir -p "$MEDIA_ROOT/tenants" "$STATIC_ROOT" 2>/dev/null || true
# Пытаемся установить права доступа
# Используем 777 для папок media, чтобы контейнер мог писать независимо от прав на хосте
# Это безопасно, так как доступ контролируется на уровне Docker volume
# Устанавливаем права рекурсивно на все существующие файлы и папки
find "$MEDIA_ROOT" -type d -exec chmod 777 {} \; 2>/dev/null || true
find "$MEDIA_ROOT" -type f -exec chmod 666 {} \; 2>/dev/null || true
chmod -R 755 "$STATIC_ROOT" 2>/dev/null || true
echo "Media directory created/checked: $MEDIA_ROOT (permissions set)"
echo "Static directory created/checked: $STATIC_ROOT"
}
# Применение миграций и создание суперпользователя
run_migrations() {
echo "Running migrations for shared apps..."
@@ -167,6 +191,7 @@ case "$1" in
web)
wait_for_postgres
wait_for_redis
setup_directories
run_migrations
create_superuser
echo "Starting Gunicorn..."
@@ -182,6 +207,7 @@ case "$1" in
celery-worker)
wait_for_postgres
wait_for_redis
setup_directories
echo "Starting Celery Worker..."
exec celery -A myproject worker \
-l info \