这篇文章躺在草稿箱里有一个多月了,恰逢最近一段时间远程协作需求,以及 Traefik v2 的升级,于是便有了这篇文章。

如果你的团队也需要一个内部看板,Phabricator 是个不错的选择:能提供简单的任务管理、能提供工作看板、支持代码讨论、甚至能够让设计师也使用起来,当然还有它主打的代码审计 / Review和管理功能。

写在前面

最早接触它是在 2012 年,八年之后,这款工具的开源版本变的更加好用了。

从开源仓库可以看到,社区版的代码一直在持续更新,而且现在还提供了 SaaS 版本,考虑到私密性和账户集成等定制要求,这里决定自建服务,并自行封装容器镜像。

考虑到不是所有人都有定制需求,这里分别提供两个方案,Bitnami 的容器方案,和完全基于官方代码进行定制的容器方案。

目前社区最新版是 《stable - Promote 2020 Week 5》 ,Bitnami 会定时从官方仓库中获取版本,并进行容器封装,仓库地址:https://github.com/bitnami/bitnami-docker-phabricator,相比官方更新会稍有延时,但是基本不影响使用。

准备数据库

生产环境推荐使用云服务商提供的数据库,但是如果小规模使用,使用容器启动一个数据库示例也未尝不可。

将上面的内容保存为 docker-compose.yml 并执行 docker-compose up -d 即可。

准备好数据库后,我们聊聊怎么简单启动一个 phabricator 服务。

Bitnami 容器方案

这里提供两个版本的配置文件,更多搭配 Traefik 使用的前置知识可以在 过往的文章中 找到。

搭配 Traefik v1 使用

如果你还在使用 Traefik v1 ,那么使用下面的配置,可以一键启动封装好的稳定版本。

搭配 Traefik v2 使用

当然,这里更推荐搭配 Traefik v2 一起使用。

对程序进行汉化

感谢社区网友提供了程序的汉化补丁,下载仓库中的  PhabricatorSimplifiedChineseTranslation.php 并放置于上面配置文件指定的 extensions 目录中后,启动应用,等待应用启动就绪后,在个人设置中切换中文即可。

接下来开始正餐,如何基于源代码对 phabricator 进行容器封装。

封装 Phabricator 容器镜像

官方安装文档 写的比较详细,甚至封装了一个基础的安装脚本,我们基于此进行容器的 Dockerfile 的编写。

Dockerfile 主要分为三个部分,第一部分进行基础系统环境配置、系统环境依赖;第二部分获取当前这个版本的程序代码和应用依赖;第三部分配置应用权限、设置容器启动脚本。

这里所需的程序启动脚本 entrypoint.sh 内容如下:

执行的工作也很简单:初始化Phabricator 配置,并启动 Web Server。

相关代码我已经上传至 GitHub,并推送至 DockerHub 有需求的同学可以自取。

编写服务配置

服务配置分为两部分,第一部分是 Web Server 使用的。

将上面内容中的域名替换为自己实际使用的地址后,保存为  phabricator.conf,接着准备应用配置:

同样,替换域名为你自己的,并且将配置中的数据库相关内容替换为实际的数值,将文件保存为local.json。(如果数据库使用的是本文的内容,可以不需要修改)

编写容器启动配置

将上面保存的配置文件放置到指定目录后,编写应用启动使用的 docker-compose.yml

使用 docker-compose up -d 将应用启动,并执行 docker-compose logs -f查看应用启动状况。

当看到 Done. 的时候,就可以打开浏览器对 Phabricator 进行进一步配置啦。

设置 Phabricator 管理员账户

打开浏览器,输入你配置的域名后,Phabricator 将跳转至 Dashboard。

安装完毕的 Phabricator

剩下的事情就是根据你自己的需求进行应用配置啦。

最后

Phabricator 的搭建只是第一步,与现有仓库集成、与CI 集成等内容留与后续再写吧。

–EOF