哎呀,d/cleanup 很危险。那很容易丢失大量与 Discourse 完全无关的 Docker 工作……
我开始做一些手动修复,比如下面这样,它们之前是有效的,但权限问题越来越多,所以我决定停止“救火”。
mkdir app/assets/javascripts/plugins
mkdir tmp
sudo chown 1000:1000 tmp
sudo chown 1000:1000 app/assets/javascripts/plugins
我将使用用户 ID 为 1000 的宿主用户,我敢打赌现在它就能正常工作了,但这似乎暴露了 Discourse 开发方式的一个缺点。
……是的,这解决了问题。
在“tmp”的情况下,它可以是命名或匿名的 Docker 卷。对于插件,挂载卷可能很有用,但需要更改宿主文件系统的权限以支持写入。
我认为不能假设每个开发人员都将使用用户 ID 为 1000。
大家好,你们知道如何使用旧版本的 discourse 运行开发吗?我知道在 live discourse 中我们可以在 app.yml 中设置版本。但我不知道如何在开发中使用 docker 来实现。我想在最新的稳定版本 v2.7.10 上运行开发。感谢您的帮助。
只需在 Git 中检出该分支或提交。 (我的做法是谷歌搜索)
降级后,您需要删除、创建和迁移数据库。
你好,谢谢 @pfaffman,
我进行了新的 git pull discourse 并切换到“stable”版本分支。(使用的是 discourse v2.7.10 标签)
我运行了 dev init 并设置了管理员用户邮箱和密码
d/boot_dev --init
然后运行 rails server,它将在端口 3000 上监听
d/rails s
然后运行 ember-cli
cd app/assets/javascripts/discourse
yarn
yarn run ember serve --proxy "http://localhost:3000"
discourse 开发可以在“http://localhost:4200”上打开
但是,当我以管理员用户(在运行“d/boot_dev --init”时创建的用户)登录时,我遇到了问题
屏幕上弹出了“未知错误”,并在 /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 authentication”错误。我已经提交了一个 bug,但到目前为止还没有回复。有人能尝试重现吗?我在这个帖子的更靠前的位置看到了类似的问题,所以我想我不是一个人?
[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 使用了端口 3000 而不是 4200。我特别尝试按照此处的描述,使用自定义提供商来设置 OAuth2,但响应中出现的端口 3000 会破坏 OAuth2 工作流程。我的 OAuth2 配置中没有任何端口 3000,它一定是来自服务器内部。
有人遇到过类似的问题吗?您知道如何设置一个更接近生产环境的本地环境吗?
另外,我也尝试过在本地设置生产环境,但这需要完整的域名和电子邮件注册,对于本地环境来说似乎不太方便。
谢谢。
更新,我再次尝试采用“从头开始”的方法,这次使用的是另一台机器。现在我卡住了,因为我没有本帖前面 @dcook 在第 100 楼提到的 UID 1000。我同意假设 UID=1000 是错误的,并且构成了一个 bug。你是否已将其报告为 bug?
在我主机器上,Postgress 用户权限 bug 仍然存在,我已在此提出:https://meta.discourse.org/t/backup-restore-failing-on-clean-dev-docker-env-fatal-peer-authentication-failed-for-user-postgres/208170。
@rishabh 你对这两项有什么看法?我喜欢切换到基于 Docker 的方法,快速而干净。但现在在两台不同的机器上,感觉有点像走进了死胡同,我想知道我还能为解决这个问题做出什么贡献。也想知道 bug 的生命周期。它们是会被接收、审查、拒绝还是接受、搁置、解决等?
我现在将尝试设置原生开发环境,看看是否能让它工作。
您好。这是我第一次在 Mac 上使用 Docker 安装 Discourse。
首先,很抱歉我的英语 ![]()
我已经运行了
d/boot_dev --init
然后我收到错误,提示端口 3000 已被占用。所以我更改了端口 30030:3000(文件:bin/docker/boot_dev)
之后,我启动了这段代码
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/rail s过程非常漫长。我担心是不是有什么问题……这是正确的吗?或者d/rails s和d/ember-cli是在托管 Discourse 的后台进程?
谢谢。![]()
您好,
在开发环境中,是否可以编辑应放在 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
在 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.8.0 版本进行开发时没有遇到问题,但几天前我开始遇到这个问题。
大家有遇到同样的问题吗?
如果您使用较新版本的 Discourse 迁移了数据库,那么您需要删除并创建一个新数据库才能获取较旧的迁移。
我进行了新的全新克隆并使用 2.8.0 版本初始化了开发。应该还没有任何数据。
安装过程中出错了,有没有办法可以卸载所有东西然后重新开始?
你好,我发现了这个奇怪的错误。有人遇到过解决此问题的情况吗?提前感谢!
当我运行 d/boot_dev --init 时出现此错误。
正在迁移数据库...
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
(运行任务时显示 --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)
我也遇到了这个问题。我通过回滚此提交解决了它:
对我来说效果很好。谢谢。