使用 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 上建议更改。