아, d/cleanup은 위험합니다. Discourse와 전혀 관련 없는 Docker 작업을 많이 잃어버릴 수 있는 좋은 방법이죠…
다음과 같은 수동적인 해킹(hack)을 시도했는데, 당장은 작동했지만 권한 관련 문제가 계속 발생해서 더 이상 불을 끄는 데만 매달리기로 결정했습니다.
mkdir app/assets/javascripts/plugins
mkdir tmp
sudo chown 1000:1000 tmp
sudo chown 1000:1000 app/assets/javascripts/plugins
uid가 1000인 호스트 사용자를 사용하기로 했는데, 이제 잘 작동할 것 같지만, 이는 Discourse 개발 방식의 한계를 드러내는 것 같습니다.
…그리고 네, 그게 해결책이었습니다.
해당 "tmp"의 경우, 이름이 지정된 Docker 볼륨 또는 익명 볼륨에 위치할 수 있습니다. 플러그인의 경우, 마운트된 볼륨이 유용할 수 있지만, 쓰기 작동을 지원하려면 호스트 파일 시스템의 권한을 변경해야 합니다.
모든 개발자가 uid 1000을 사용한다고 가정하는 것은 안전하지 않다고 생각합니다.
안녕하세요, 여러분. 구버전 Discourse로 개발 환경을 실행하는 방법을 아시는 분 계신가요? 라이브 Discourse에서는 app.yml 파일에서 버전을 설정할 수 있다는 건 알고 있어요. 하지만 Docker를 사용해 개발 환경에서 어떻게 해야 하는지는 잘 모르겠어요. 마지막으로 안정화된 버전인 v2.7.10으로 개발을 진행하고 싶습니다. 도움 주시면 감사하겠습니다.
git에서 해당 브랜치나 커밋을 체크아웃하면 됩니다. (제 경우 구글에서 검색해서 방법을 찾습니다.
다운그레이드 후에는 데이터베이스를 삭제하고 다시 생성한 다음 마이그레이션을 실행해야 합니다.
안녕하세요, @pfaffman 님 감사합니다.
discourse를 새로 git pull한 후 “stable” 버전 브랜치로 체크아웃했습니다. (이것은 discourse v2.7.10 태그를 사용합니다)
admin 사용자 이메일과 비밀번호를 설정하기 위해 dev init를 실행했습니다.
d/boot_dev --init
그리고 rails 서버를 실행하면 포트 3000에서 리스닝합니다.
d/rails s
그다음 ember-cli를 실행합니다.
cd app/assets/javascripts/discourse
yarn
yarn run ember serve --proxy "http://localhost:3000"
discourse 개발 환경은 "http://localhost:4200"에서 열립니다.
그러나 admin 사용자(“d/boot_dev --init” 실행 시 생성한 사용자)로 로그인할 때 문제가 발생했습니다.
화면에 “Unkown error” 팝업이 표시되고, /logs에는 아래 오류가 나타납니다.
ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: function max(boolean) does not exist
LINE 1: ..._rank, MAX(user_badges.created_at) AS created_at, MAX(user_b...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
)
lib/freedom_patches/ams_include_without_root.rb:49:in `include!'
app/controllers/application_controller.rb:495:in `serialize_data'
app/controllers/application_controller.rb:504:in `render_serialized'
app/controllers/session_controller.rb:611:in `login'
app/controllers/session_controller.rb:337:in `create'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
app/controllers/application_controller.rb:395:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/missing_avatars.rb:23:in `call'
lib/middleware/turbo_dev.rb:34:in `call'
이 오류에 대해 경험이 있으신가요? 아니면 이전 버전에서 개발 환경을 실행하는 제 단계가 잘못되었을까요?
데이터베이스를 rm -r으로 삭제해야 할 것 같습니다. 위치는 정확히 모르지만, 아마도 OP(원문)에 있을 가능성이 높습니다.
안녕하세요,
다시 완전히 깨끗한 상태로 초기화했습니다. 모든 것이 순조롭게 진행되어, 로그인할 수 있는 깨끗한 개발 환경을 확보했습니다.
그런 다음 프로덕션 환경과 일치하도록 몇 가지 플러그인을 설치하고 최신 백업을 가져왔습니다.
백업을 업로드하고 개발 환경으로 복원하려고 했더니 다시 Peer 인증 오류가 발생합니다. 버그를 보고했지만 아직 답변이 없습니다. 재현해 볼 수 있는 분이 계신가요? 이 게시물의 댓글을 더 위에서 비슷한 문제를 본 적이 있어서, 저 혼자 이런 문제를 겪고 있는 것은 아닌 것 같습니다.
[2021-11-29 19:43:39] 'koen' has started the restore!
[2021-11-29 19:43:39] Marking restore as running...
[2021-11-29 19:43:39] Making sure /src/tmp/restores/default/2021-11-29-194339 exists...
[2021-11-29 19:43:39] Copying archive to tmp directory...
[2021-11-29 19:43:39] Extracting dump file...
[2021-11-29 19:43:40] Validating metadata...
[2021-11-29 19:43:40] Current version: 20211124161346
[2021-11-29 19:43:40] Restored version: 20211123033311
[2021-11-29 19:43:40] Enabling readonly mode...
[2021-11-29 19:43:40] Pausing sidekiq...
[2021-11-29 19:43:40] Waiting up to 60 seconds for Sidekiq to finish running jobs...
[2021-11-29 19:43:46] Creating missing functions in the discourse_functions schema...
[2021-11-29 19:43:46] Restoring dump file... (this may take a while)
[2021-11-29 19:43:47] psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
[2021-11-29 19:43:47] EXCEPTION: psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
[2021-11-29 19:43:47] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-29 19:43:47] Trying to rollback...
[2021-11-29 19:43:47] There was no need to rollback
[2021-11-29 19:43:47] Cleaning stuff up...
[2021-11-29 19:43:47] Dropping functions from the discourse_functions schema...
[2021-11-29 19:43:47] Removing tmp '/src/tmp/restores/default/2021-11-29-194339' directory...
[2021-11-29 19:43:47] Unpausing sidekiq...
[2021-11-29 19:43:47] Marking restore as finished...
[2021-11-29 19:43:47] Notifying 'koen' of the end of the restore...
[2021-11-29 19:43:51] Finished!
안녕하세요,
포트 3000과 4200 간의 분리에서 비롯된 것 같은 문제를 겪고 있습니다. 두 포트가 서로 어떻게 관련되어 있는지 정확히 확신은 없으나, 제 이해로는 3000이 서버이고 4200은 Ember CLI를 통해 해당 서버로 가는 프록시 역할을 하는 것으로 알고 있습니다. 4200 포트는 잘 작동하지만, 때때로(특히 302 응답을 반환할 때) 응답 헤더의 URI가 4200 대신 3000 포트를 사용하는 경우가 있습니다. 저는 여기에 설명된 대로 커스텀 제공자를 사용하여 OAuth2를 설정하려고 시도 중이었는데, 일부 응답에 3000 포트가 포함되어 있어 OAuth2 워크플로가 깨집니다. 제 OAuth2 설정 어디에도 3000 포트가 없으므로, 이는 서버 내부에서 발생하고 있는 것으로 보입니다.
누군가 이전에 이러한 종류의 문제를 경험해 보신 적이 있으신가요? 프로덕션 릴리스 환경을 더 밀접하게 모방하는 환경을 설정하는 방법을 아시는 분이 계신가요?
참고로, 로컬에서 프로덕션 릴리스를 설정해 보기도 했는데, 이는 완전한 도메인 및 이메일 등록을 요구하며 로컬 환경에는 매우 비우호적인 것 같습니다.
감사합니다.
업데이트: 이번에는 다른 머신을 사용해서 처음부터 다시 설정하는 방법을 시도해 보았습니다. 그런데 이번에는 이 스레드에서 더 위에 언급된 @dcook님의 100번째 게시물에 나와 있는 UID 1000이 없어서 막혀 있습니다. UID=1000을 전제로 하는 것은 잘못된 것 같고, 이는 버그라고 생각합니다. 그렇게 보고하셨나요?
제 메인 머신에서는 PostgreSQL 사용자 권한 버그가 여전히 지속되고 있으며, 이 문제는 여기에서 제기한 바 있습니다: Backup restore failing on clean dev docker env: FATAL: Peer authentication failed for user “postgres”.
@rishabh 두 가지 항목에 대해 어떻게 생각하시나요? 도커 기반 방식으로 전환한 것은 빠르고 깔끔해서 좋았습니다. 하지만 지금은 두 대의 다른 머신에서 모두 막혀 있는 것 같아 조금 막다른 골목에 처한 기분입니다. 해결을 위해 제가 추가로 기여할 수 있는 것이 무엇인지 궁금합니다. 또한 버그의 생명주기에 대해서도 조금 궁금합니다. 버그는 접수되고, 검토되며, 거부되거나, 수락되거나, 보류되거나, 해결되는 등의 과정을 거치나요?
일단 지금은 네이티브 개발 환경을 설정해 보고 그것이 작동하는지 확인해 보겠습니다.
안녕하세요. 저는 Mac에서 Docker를 이용해 Discourse를 설치하는 것이 처음입니다.
먼저 제 영어 실력이 부족해서 죄송합니다 .. ![]()
이미 다음 명령어를 실행했습니다.
d/boot_dev --init
그런데 포트 3000이 이미 사용 중이라는 오류가 발생했습니다. 그래서 bin/docker/boot_dev 파일에서 포트 매핑을 30030:3000으로 변경했습니다.
그 후 다음 코드를 실행했습니다.
d/boot_dev --init
# 하나의 터미널에서:
d/rails s
# 그리고 별도의 터미널에서
d/ember-cli
제 질문은 다음과 같습니다.
-
d/rails s코드를 실행하면 'localhost:30030’에서 Discourse 시작 페이지를 열 수 있습니다. 만약 단순히 Discourse를 열고 포트 30030(포트 포워딩)을 사용하고자 한다면, 이 상태로 설치 과정을 완료할 수 있을까요?d/rails s,d/ember-cli가 무엇을 하는지 잘 모르겠습니다. … -
그리고
d/rails s프로세스가 너무 오래 걸립니다. 뭔가 잘못되었는지 걱정됩니다. 정상적인 건가요? 아니면d/rails s와d/ember-cli는 Discourse를 호스팅하는 동안 백그라운드 프로세스로 실행되는 것인가요?
감사합니다. ![]()
안녕하세요,
개발 환경(dev environment)에서 app.yml에 설정해야 하는 설정 항목을 수정할 수 있을까요?
이 질문은 주로 DISCOURSE_ENABLE_CORS 설정과 관련이 있습니다. 관리자 인터페이스에서 CORS 오리진을 단순히 추가하는 것만으로는 CORS 오류가 해결되지 않았습니다.
감사합니다.
/config 아래에 discourse.conf 파일을 생성하는 것이 문제를 해결한 것 같습니다:
enable_cors = true
기본 설정 파일에서 가져온 정보: discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub
여러분, 안녕하세요. Docker를 사용해 Discourse 개발 환경을 초기화할 때 문제가 발생했습니다.
현재 프로덕션 Discourse는 v2.8.0 태그 버전을 사용하고 있습니다. 따라서 로컬 개발 환경도 v2.8.0으로 실행해야 합니다.
개발 환경 설정을 위해 Mac OS에서 Docker를 사용하고 있습니다.
명령어로 수행한 내용은 다음과 같습니다.
git clone https://github.com/discourse/discourse.git
cd discourse
git checkout v2.8.0
d/boot_dev --init
초기화 코드가 데이터베이스 마이그레이션 단계에 도달한 후 다음 오류가 발생했습니다.
Migrating database...
== 20220104053343 AddBookmarkPolymorphicColumns: migrating ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
2개월 전에는 2.8.0 버전으로 개발을 수행했을 때 문제가 없었지만, 며칠 전부터 이 문제가 발생하기 시작했습니다.
혹시 같은 문제를 겪고 계신 분이 있으신가요?
만약 더 새로운 버전의 Discourse로 데이터베이스를 마이그레이션했다면, 이전 버전의 마이그레이션을 적용하려면 데이터베이스를 삭제하고 새로 생성해야 합니다.
새로운 클론을 생성하고 2.8.0 버전으로 개발을 초기화했습니다. 아직 데이터가 없어야 합니다.
설치 과정에서 실수를 했는데, 모든 것을 완전히 제거한 뒤 처음부터 다시 설치할 수 있는 방법이 있을까요?
안녕하세요, 이 오류가 좀 이상하게 느껴집니다. 이 문제를 해결해 본 분이 있을까요? 미리 감사드립니다!
d/boot_dev --init를 실행할 때 나타나는 오류입니다.
Migrating database...
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
d/boot_dev --init를 실행하는 동안 동일한 오류 메시지가 발생했습니다. d/rake db:migrate RAILS_ENV=development를 시도해 보았지만, 다시 같은 오류가 발생했습니다:
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
저도 같은 문제를 겪었습니다. 해당 커밋을 되돌려서 해결했습니다.
저한테는 완벽하게 잘 작동합니다. 감사합니다.