从 0 到 1 跑通 OpenProject 本地开发环境
【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject
在一台全新的机器上把 OpenProject 的本地部署环境搭起来,最容易卡住的地方不是代码,而是依赖:Ruby、Node.js、PostgreSQL、memcached 一堆服务要各自装对版本,光排环境就可能耗掉半天。用仓库自带的容器化方案可以绕开这些坑——按本文流程操作完,你本地会有一个可登录、可实时热更新的 OpenProject 开发环境,改一行代码刷新浏览器就能看到效果。
环境体检:先确认这几项达标
| 检查项 | 要求 | 获取方式 |
|---|---|---|
| 内存 | 至少 4GB 可供 Docker 使用 | Docker 设置中调高虚拟主机内存上限 |
| 磁盘 | 20GB 以上空闲空间 | 存放源码、镜像与数据卷 |
| 网络 | 可拉取镜像与依赖包 | 首次构建会下载 PostgreSQL、Node 等基础镜像 |
| Git | 任意近期版本 | 各发行版包管理器安装 |
| Docker + compose | 带 compose 插件的 Docker | 各平台官方安装包 |
| Node.js | v18 以上(仅不跑容器的前端开发需要) | 可用 nvm 管理版本 |
容器化路线下官方开发文档的原话是"只需要 docker,别的什么都不用装"。如果内存不足 4GB,后续前端容器会直接以 Exit status 137 退出;磁盘不足则镜像构建会中途失败。
部署主流程
把源码拉到本地
容器方案会把源码目录挂载进后端容器,本地不需要预装 Ruby 和 Node.js,所以这一步只需要拿到代码。
git clone https://gitcode.com/GitHub_Trending/op/openproject cd openproject配置环境变量与容器编排
仓库里的 docker-compose.yml 定义了 backend、frontend、db、cache 等服务,运行时参数统一从.env文件读取;端口冲突等个性化配置则放在 override 文件中。三个文件各司其职:.env管变量、docker-compose.override.yml管端口覆盖、共享的gateway网络供协作编辑服务(hocuspocus)接入。
cp .env.example .env cp docker-compose.override.example.yml docker-compose.override.yml其中DEV_UID/DEV_GID要填成本机用户的 UID/GID,否则容器在源码目录里生成的文件会归属 root,后续写文件处处报错。这一步卡住的人最多,尤其是 UID 和系统习惯值不一致时。
Windows(PowerShell):WSL2 后端下默认就是1000,直接确认 .env 里的DEV_UID=1000、DEV_GID=1001即可,无需额外导出环境变量。
macOS / Linux:用本机真实 UID 覆盖.env中的默认值:
id -u id -gmacOS 差异点:Apple 芯片上若 hocuspocus 服务起不来,在docker-compose.override.yml里给它加一行platform: linux/amd64(docker-compose.yml 中有对应注释)。
最后创建所有服务共享的外部网络,这条命令幂等,重复执行无副作用:
docker network create gateway 2>/dev/null || true把数据库和依赖灌进去
backend setup会先拉起 PostgreSQL 作为依赖,再在容器内安装全部 Ruby 依赖、执行数据库迁移和种子数据——相当于把db:create db:migrate db:seed和bundle install一次性做完。前端则是独立的容器化安装,依赖清单见 frontend/package.json:
# 首次运行会安装全部 gem,耗时较长;结果缓存在 Docker 卷里,第二次起快很多 docker compose run --rm backend setup # 安装前端依赖 docker compose run --rm frontend npm install启动开发栈
只起开发所需的服务(backend 会自动带上 db、cache、frontend、hocuspocus 这些依赖),worker 按需再启,它资源消耗较大:
docker compose up -d backend代码改动会被自动拾取,热更新生效,不需要重启容器。后台任务需要时再补一个 worker:
docker compose up -d worker跑通验证
前端日志出现✔ Compiled successfully.、后端日志出现 Puma 的启动成功信息后,环境就算就绪:
http://localhost:3000:完整的应用入口http://localhost:4200:带 live-reload 的前端开发服务
首次请求会比较慢(要编译页面),之后就快了。默认登录凭据由种子脚本 app/seeders/admin_user_seeder.rb 写入:
用户名: admin 密码: admin登录成功后能看到应用首页:
进入项目后即可看到工作台与模块入口,说明后端 API、数据库、前端资源链路全部打通:
如果浏览器打不开 3000 端口或页面空白,直接跳到下面的排障速查。
高频报错速查
| 现象 | 原因 | 解决 |
|---|---|---|
| frontend 容器 Exit status 137 | Docker 分配的内存不足 4GB | 调大 Docker 虚拟主机内存上限后docker compose up -d backend frontend |
| 3000/4200 端口被占用,compose 拒绝启动 | 端口与本地其他服务冲突 | 在 docker-compose.override.yml 中覆盖PORT/FE_PORT |
Your Ruby version is X, but Gemfile specified Y | 基础镜像过旧 | docker compose build --pull后重新docker compose run --rm backend setup |
| 前端页面空白或编译报错(切换分支后高发) | node_modules 状态损坏 | docker compose run --rm frontend npm install后docker compose restart frontend |
| 数据库连接异常 | 本地残留config/database.yml干扰了容器内连接 | 删除该文件后重启 backend |
如果上面都没命中,去这里查:docs/development/development-environment/。
延伸与速查
- docs/development/development-environment/:Docker 开发环境官方文档,含 TLS、调试、数据迁移等进阶内容
- CONTRIBUTING.md:贡献指南,提交代码前先看流程约定
- frontend/src/:前端源码,Angular 应用全部页面与组件都在这里
- lib/api/:后端 REST API 实现,改接口行为从目录下手
- docs/development/testing/:如何跑测试,每个功能都应带自动化测试
| 常用命令 | 作用 |
|---|---|
docker compose up -d backend | 启动开发栈(含依赖服务) |
docker compose logs -f backend | 跟踪后端日志 |
docker compose run --rm backend setup | 重建数据库并同步依赖 |
docker compose up -d worker | 启动后台任务 worker |
bin/compose rspec | 在测试容器里跑全量后端测试 |
docker compose exec backend-test bundle exec rspec spec/features/work_package_show_spec.rb | 跑单个测试文件 |
docker compose down | 停止并移除当前栈 |
环境就绪后,下一步通常是从 config/routes.rb 入手,把后端路由和控制器对照着读一遍,再切到前端目录看对应页面组件。
【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考