从 0 到 1 跑通 OpenProject 本地开发环境
2026/9/11 11:27:58 网站建设 项目流程

从 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.jsv18 以上(仅不跑容器的前端开发需要)可用 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=1000DEV_GID=1001即可,无需额外导出环境变量。

macOS / Linux:用本机真实 UID 覆盖.env中的默认值:

id -u id -g

macOS 差异点: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:seedbundle 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 137Docker 分配的内存不足 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 installdocker 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询