fix: Correct media permissions via docker exec after deploy

- Remove 2>/dev/null || true from chown/chmod in entrypoint.sh
- Add write test for media directory in entrypoint.sh
- Add Step 8 in deploy script: fix permissions via docker exec
- This ensures media files remain accessible after auto-deploy

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 00:09:50 +03:00
parent c77fcaf669
commit 61848774d2
2 changed files with 31 additions and 9 deletions

View File

@@ -113,18 +113,27 @@ setup_directories() {
# Создаем папки если их нет (рекурсивно)
# Важно: создаем структуру папок для tenants
mkdir -p "$MEDIA_ROOT/tenants" "$STATIC_ROOT" 2>/dev/null || true
# Пытаемся установить права доступа
mkdir -p "$MEDIA_ROOT/tenants" "$STATIC_ROOT"
# Устанавливаем права доступа (без скрытия ошибок - чтобы увидеть проблемы)
# Сначала меняем владельца на appuser (так как мы root)
chown -R appuser:appuser "$MEDIA_ROOT" "$STATIC_ROOT" 2>/dev/null || true
chown -R appuser:appuser "$MEDIA_ROOT" "$STATIC_ROOT"
# Используем 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
find "$MEDIA_ROOT" -type d -exec chmod 777 {} \;
find "$MEDIA_ROOT" -type f -exec chmod 666 {} \;
chmod -R 755 "$STATIC_ROOT"
# Проверка что media доступна для записи
if ! touch "$MEDIA_ROOT/.test" 2>/dev/null; then
echo "ERROR: Cannot write to $MEDIA_ROOT"
ls -la "$MEDIA_ROOT"
exit 1
fi
rm -f "$MEDIA_ROOT/.test"
echo "Media directory is writable: $MEDIA_ROOT"
echo "Media directory created/checked: $MEDIA_ROOT (permissions set)"
echo "Static directory created/checked: $STATIC_ROOT"