使用 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/ember-cli
…然后在 http://localhost:4200 上打开浏览器,瞧!您应该能看到 Discourse。
插件符号链接
Docker 开发流程支持 plugins/ 目录下的符号链接,但有以下注意事项:
每当创建新的插件符号链接时,必须使用以下命令重启 Docker 容器:
d/shutdown_dev; d/boot_dev
注释:
-
要测试电子邮件,请运行 MailHog:
d/mailhog -
如果缺少 gem,请运行:
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 上建议更改。