S3에서 모든 데이터를 내 서버로 되돌리는 작업을 시도하고 있습니다. 하지만 rake uploads:migrate_from_s3를 실행하면 You must disable S3 uploads before running that task라는 오류가 반환됩니다. 그래서 Discourse 설정에서 enable s3 uploads 옵션의 체크를 해제하고, app.yml 파일에도 DISCOURSE_USE_S3: false를 추가했습니다. 하지만 여전히 같은 오류가 발생합니다.
S3 환경 변수란 무엇인가요? 제 경우, DISCOURSE_USE_S3는 env 아래에 유지됩니다.
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
UNICORN_WORKERS: 2
## TODO: 이 Discourse 인스턴스가 응답할 도메인 이름
DISCOURSE_HOSTNAME: engineersasylum.com
## 컨테이너를 위에서 지정된 동일한 호스트 이름(-h 옵션)으로 시작하려면 주석 해제(기본값 "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: 초기 가입 시 관리자 및 개발자로 지정될 쉼표로 구분된 이메일 목록 예: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'praveen369gen@gmail.com'
#S3 설정
DISCOURSE_USE_S3: false
DISCOURSE_S3_REGION: ap-south-1
DISCOURSE_S3_ACCESS_KEY_ID: AKxxxxxxxxxxxxxxxxxxxxxDQ
DISCOURSE_S3_SECRET_ACCESS_KEY: QWVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxLigGs
DISCOURSE_S3_BUCKET: enginxxxxxxxxxxket
DISCOURSE_S3_BACKUP_BUCKET: enginxxxxxxxxxxxxcket
DISCOURSE_BACKUP_LOCATION: s3
… 그리고 @Pravi님, yml 파일의 대부분의 변수를 변경한 후에는 컨테이너(앱)를 다시 빌드해야 한다는 것을 잊지 마세요. 일부 변수는 컨테이너를 중지하고 다시 시작하는 것만으로 변경될 수 있지만, 확실하지 않을 경우 yml 파일을 변경한 후에는 컨테이너(앱)를 다시 빌드하는 것이 좋습니다.
DISCOURSE_USE_S3와 DISCOURSE_S3_BUCKET를 해제하면 다음과 같은 오류가 발생합니다.
root@ip-172-31-7-247-app:/var/www/discourse# rake uploads:migrate_from_s3
Migrating uploads from S3 to local storage for 'default'...
rake aborted!
NoMethodError: undefined method `downcase' for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/lib/tasks/uploads.rake:138:in `migrate_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:118:in `block in migrate_all_from_s3'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:68:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:78:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:118:in `migrate_all_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:93:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_from_s3
(See full trace by running task with --trace)
저도 그 방법을 시도해 봤습니다. DISCOURSE_USE_S3: false를 제외한 나머지는 모두 주석 처리했는데, 이전과 동일한 오류가 발생합니다.
root@ip-172-31-7-247-app:/var/www/discourse# rake uploads:migrate_from_s3
Migrating uploads from S3 to local storage for 'default'...
rake aborted!
NoMethodError: undefined method `downcase' for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/lib/tasks/uploads.rake:138:in `migrate_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:118:in `block in migrate_all_from_s3'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:68:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:78:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:118:in `migrate_all_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:93:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_from_s3
(See full trace by running task with --trace)