Загрузка на внешнее хранилище

Всем привет,

Я пытаюсь изменить расположение загрузок в Discourse на внешнее хранилище на моем собственном хосте из-за нехватки места. У меня смонтирована общая папка CIFS, и я уже скопировал все существующие загрузки в смонтированное расположение, сохранив структуру каталогов.

Затем я добавил следующие строки в app.yml:

- volumes:
  - volume:
      host: /<storage-location>/uploads
      guest: /shared/uploads

После пересборки контейнера командой ./launcher rebuild app (я использую пользователя root) изображения на сайте перестали отображаться. Похоже, что все они возвращают ошибку 404.

Я пробовал монтировать общую папку CIFS с правами root:root и _default_hostname:www-data, но в обоих случаях изображения не отображаются.

Какой лучший (или правильный) способ выполнить такое изменение расположения загрузок?

Заранее спасибо, ребята!

Вот что установлено по умолчанию:

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared

Скорее всего, вам понадобится что-то вроде этого:

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /your/cifs/share/discourse-uploads
      guest: /shared/uploads

Верно! Я пробовал именно так, и это сработало, при условии, что у места монтирования хранилища есть правильные права доступа. root:root не работает, но _default_hostname:www-data кажется, работает.

Ещё я заметил следующее: загрузка изображений в темах, даже после перемещения в новое место хранения, больше не работает, и их приходится загружать заново. Другие изображения/загрузки (логотипы, заголовки и т. д.) работают нормально.

Спасибо!

Так быть не должно. Возможно, вы скопировали файлы в неправильное место.

Я тоже так думал, но перепроверил, что скопировал всю папку uploads из shared/standalone/ в своё внешнее хранилище, включая подпапки default и другие.

Важно отметить, что я несколько раз пытался изменить расположение загрузок с разными конфигурациями внешнего хранилища (в основном менялись права доступа к файлам и папкам), и между этими попытками выполнял rake posts:rebake, чтобы снова заставить вложения работать. Возможно, проблема возникла где-то в процессе этих действий…

Странно, что повторная загрузка исправляет это.

Вы можете проверить Uploads.pluck(:url) в Rails и посмотреть, нет ли там чего-то необычного.