ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenProject容器化部署完整实操:排掉三个高频坑,半小时把项目管理平台跑起来

OpenProject容器化部署完整实操:排掉三个高频坑,半小时把项目管理平台跑起来 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/openprojectOpenProject 是开源圈口碑很好的项目管理软件甘特图、敏捷看板、工时统计、组合管理一应俱全。想把它用容器化部署跑起来很多人不是败在步骤复杂而是栽在三个不起眼的小坑上。这篇文章不绕弯子把三颗雷逐个排掉再给你一条能直接抄的部署流水线跑通一个自带数据库的生产实例。先说好要排的三颗雷你心里有个数第一颗跟着仓库根目录的 compose 文件走结果拉起的是开发环境根本不是生产形态第二颗容器跑得欢一重启数据全没项目进度直接删档第三颗密钥还是出厂默认值等于开着门睡觉安全分拉满。每颗雷下面都有解法和验证方法看完你也能自己半小时搞定。第一颗雷在仓库门口就被 compose 文件带偏很多人 clone 完项目看到根目录的docker-compose.yml就顺手docker compose up -d。这里有个坑那份 compose 是给开发调试用的——前端占 4200 端口、后端占 3000还挂了一串测试服务和协同编辑组件内存吃得飞起而且根本不是能拿去上生产的形态。真正管用的生产菜谱在docker/prod/目录里。里面的 Dockerfile 支持两种口味all-in-one网页服务、PostgreSQL 数据库、后台任务全打包进一个容器和slim只带应用本体数据库和代理你自己配。新手建议先用 all-in-one省心。先把镜像造出来git clone https://gitcode.com/GitHub_Trending/op/openproject cd openproject docker build -f docker/prod/Dockerfile --target all-in-one -t openproject-prod .大白话git clone把代码拿到本地然后用仓库自带的 Dockerfile 现场烘焙出一个叫openproject-prod的镜像。第一次构建要装依赖、编译前端资源等几分钟很正常别急着砸键盘。怎么判断成功命令收尾处出现naming to docker.io/library/openproject-prod且没有红字报错再执行docker images | grep openproject-prod能看到镜像记录就过关了。第二颗雷数据跟着容器一起删档很多人以为容器就是个小硬盘东西放进去就一直在。错了——容器的文件系统是用完即弃的临时工删容器、升级、重建说没就没。PostgreSQL 的数据、你上传的附件全躺在/var/openproject下面不挂卷的话哪天手一抖把容器删了项目进度直接清零哭都来不及。解法是命名卷named volume相当于给容器配了个保险柜容器随便换柜子里的东西原封不动。docker run -d --name openproject \ -p 8080:80 \ -e SECRET_KEY_BASE$(openssl rand -hex 64) \ -v op-pg:/var/openproject/pgdata \ -v op-assets:/var/openproject/assets \ openproject-prod大白话-v把两个命名卷分别挂到数据库目录和附件目录数据从此有了退路-p 8080:80把容器内 80 端口映射到宿主机 8080浏览器走 8080 就能访问SECRET_KEY_BASE用openssl rand现场生成一个随机密钥这个下面还会细说。怎么判断成功docker volume ls | grep op- docker inspect openproject --format {{range .Mounts}}{{.Name}} - {{.Destination}}{{println}}{{end}}能看到op-pg和op-assets两个卷且 Mounts 里对应路径都列出来了说明保险柜已经上岗。第三颗雷密钥还是出厂默认等于裸奔上线Dockerfile 里SECRET_KEY_BASE的默认值写着OVERWRITE_ME明摆着逼你改。拿它上生产会话可以被伪造风险直接拉满。上面那条命令虽然现场生成了随机密钥但每次启动都换一个用户的登录态会反复失效——所以更稳的做法是把它固定下来写进.envecho SECRET_KEY_BASE$(openssl rand -hex 64) .env大白话把密钥写进项目根目录的.env文件之后启动容器自动读取密钥恒定登录态稳定。怎么判断成功cat .env能看到一长串 128 位十六进制字符串。另外首次启动的日志里会打出这行——the default admin credentials are login: admin, password: admin这是你进管理后台的第一把钥匙进去之后第一时间改掉。一条流水线把三颗雷的解法串起来如果你只想快速跑个最小实例上面那条docker run已经够用。想更规范、更好管理可以自建一个精简的docker-compose.yml——注意别和仓库根目录那份开发用的搞混services: openproject: image: openproject-prod container_name: openproject ports: - 8080:80 environment: SECRET_KEY_BASE: ${SECRET_KEY_BASE} volumes: - op-pg:/var/openproject/pgdata - op-assets:/var/openproject/assets volumes: op-pg: op-assets:大白话这份清单只定义了一个服务直接复用刚构建的镜像密钥从.env里读两个命名卷负责持久化比仓库根目录那份开发 compose 清爽得多。然后一条命令起飞docker compose up -d怎么判断成功浏览器打开http://localhost:8080第一次访问会自动初始化数据库并引导你创建管理员账号看到这个画面就说明部署打通了。日志里出现----- Launching supervisord...说明数据库迁移、种子数据这些脏活都交给容器自己干完了。部署完成后进入的首页左侧是项目、工作包、甘特图、看板等入口中间是项目概览和快捷导航上线首检五分钟确认它真的在好好干活服务起来只是第一步按下面三件事过一遍才算踏实看进程docker ps里 openproject 的状态是Up说明主进程没崩看日志docker logs -f openproject没有连续报错supervisord 把各子进程都拉起来了看数据进系统建一个项目、传一张附件然后docker restart openproject刷新页面——东西都还在说明保险柜真的起作用了。验证完这三件事这台容器就能正式上岗了。进去之后可以直接建项目、拉工作包、排甘特图。比如下面这个工作包详情页指派负责人、设置优先级、挂里程碑全在一张页面上搞定而这些都是你这次部署换来的永久能力收个尾OpenProject 的容器化部署并没有想象中玄乎——避开开发 compose 的坑、记住数据必须挂卷、上线前换掉默认密钥三步走完一个自带数据库、能长期稳定跑的项目管理平台就落地了。以后升级也简单重新构建一个新 tag 的镜像停旧起新数据稳稳躺在卷里怎么折腾都不丢。【免费下载链接】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),仅供参考
返回列表