为了更好浏览代码,尝试使用opengrok,为了简化安装和维护的步骤,决定以docker的形式安装opengrok。
参考官方文档:https://github.com/OpenGrok/docker。
环境为ubuntu
参考docker官方的安装步骤:https://docs.docker.com/engine/install/ubuntu/
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
至此,docker环境基本搭建完成,其他步骤可进一步参考官方文档。
我们需要从docker仓库中拉取opengrok的镜像
sudo docker push opengrok/docker
sudo docker run -d -e REINDEX=30 \ # 后台运行
-v /home/lubuntu/workspace/opengrok/src:/opengrok/src \ # 映射src源码路径
-v /home/lubuntu/workspace/opengrok/docker:/docker \ # 映射docker相关脚本路径
-p 8080:8080 opengrok/docker:latest # 映射端口,可以将8080映射成其他端口
运行之后,可以通过sudo docker ps
来查看docker容器运行的情况:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72bc02d74a23 opengrok/docker:latest "/scripts/start.py" 12 seconds ago Up 11 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp hungry_robinson
如果需要进去容器里去做或者查看一些东西,可以进入容器的bash内:
sudo docker exec -it <container id> bash
# 其中container id就是通过docker ps查看到的容器ID
更新代码索引需要opengrok容器执行更新索引的脚本,官方仓库已经提供了。
还记得上面映射的路径-v /home/lubuntu/workspace/opengrok/docker:/docker
,更新脚本就在docker/scripts/index.sh
,如果你在容器外,可以运行sudo docker exec <container id> /docker/scripts/index.sh
;如果已经在容器内了,直接运行/docker/scripts/index.sh
即可。
opengrok代码的索引主要是通过ctags来生成,如果项目比较大的换,会有很对ctags进程在后台运行,并且生成索引需要一段时间,之后的同步处理有需要一段时间,同时在更新和使用的过程中,opengrok的容器会莫名其妙挂掉,有时在更新一半后,有时在网页浏览时,感觉不稳定。
http://www.bytefire.io/2016/11/21/deploy-opengrok-by-docker/
https://oracle.github.io/opengrok/