使用 Docker 进行开发
由于 Discourse 运行在 Docker 中,您应该能够直接使用 Discourse 开发容器从源代码目录运行 Discourse。
优点:无需安装任何系统依赖项,也无需任何配置即可快速搭建开发环境。
缺点:比 Ubuntu 上的原生开发环境稍慢,比 MacOS 上的原生安装慢得多。
另请参阅 Developing Discourse using a Dev Container
步骤 1:安装 Docker
Ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
19.10
sudo apt-get install docker.io
sudo usermod -a -G docker $USER
sudo reboot
Windows WSL:Ubuntu
您可以在 WSL 内运行上述命令,但您必须将所有文件放在 WSL 文件系统中。例如,如果文件位于 ~/discourse 内,则可以正常工作;但如果放在 /mnt/c/discourse 内,则会失败。
MacOS
Discourse 开发 Docker 镜像仅适用于 x86_64 架构。M1 Mac 可以通过架构模拟启动该镜像,但由于 QEMU 中 缺乏 inotify 支持,Discourse 很可能无法启动。
选项 1: 从 Docker 商店 下载打包好的 .dmg 文件
选项 2: brew install docker
步骤 2:启动容器
将 Discourse 仓库克隆到本地设备。
git clone https://github.com/discourse/discourse.git
cd discourse
(从您的源代码根目录)
d/boot_dev --init
# 等待:
# - 安装依赖项,
# - 迁移数据库,以及
# - 创建管理员用户(您需要与此交互)
# 在一个终端中:
d/rails s
# 在另一个终端中
d/dev --only ember
…然后在 http://localhost:3000 打开浏览器,瞧!您应该能看到 Discourse。
插件符号链接
Docker 开发流程支持 plugins/ 目录下的符号链接,但有以下注意事项:
每当创建新的插件符号链接时,必须使用以下命令重启 Docker 容器:
d/shutdown_dev; d/boot_dev
注意:
-
要测试电子邮件,请运行 MailHog:
d/mailhog -
如果缺少 gems,请运行:
d/bundle install -
如果需要数据库迁移:
d/rake db:migrate RAILS_ENV=development -
完成后,您可以选择使用以下命令终止 Docker 容器:
d/shutdown_dev -
数据在容器调用之间会持久保存在您的源代码根目录
tmp/postgres中。如果出于任何原因需要重置数据库,请运行:sudo rm -fr data -
如果您看到类似“尝试连接 Docker 时权限被拒绝”的错误,请运行:
run `sudo usermod -aG docker ${USER}` sudo service docker restart -
如果您希望将容器的端口全局暴露给网络(默认关闭),请使用:
d/boot_dev -p -
Dockerfile 来自 GitHub 上的 discourse/discourse_docker,特别是 image/discourse_dev。
运行测试
d/rake autospec
要运行特定的插件测试,您还可以这样做:
d/rake plugin:spec["discourse-follow"]
或者甚至更具体地执行以下操作:
my-machine:~/discourse$ d/shell
discourse@discourse:/src$ RAILS_ENV=test /src/bin/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
本文档已进行版本控制 - 请在 GitHub 上提出更改。