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:
@@ -57,7 +57,7 @@ services:
|
||||
# Монтируем код приложения для горячего обновления (опционально, если нужно обновлять без пересборки)
|
||||
# - /Volume1/DockerAppsData/mixapp/app:/app
|
||||
# Медиа и статика
|
||||
# Медиа и статика (монтируем туда, где их ждет Django: внутри myproject)
|
||||
# Медиа и статика (монтируем туда, где их ждет Django)
|
||||
- /Volume1/DockerAppsData/mixapp/media:/app/myproject/media
|
||||
- /Volume1/DockerAppsData/mixapp/static:/app/myproject/staticfiles
|
||||
ports:
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user