最近查找可以方便阅读代码的工具,发现了 OpenGrok 这个东东,但是这个东东需要自己去配置其服务状态。
简单来说, 要使用 OpenGrok 需要满足两个条件:
- 搭建一个后台来跑 OpenGrok
- 有个浏览器,能访问到搭建好的 OpenGrok
至于什么是 OpenGrok,参见知乎 有哪些不错的大型项目代码浏览工具? 。
由于不想搭一次只能用一次,另外不想在mac装太多东西,所以使用了 docker 来进行搭建。
下面是搭建步骤:
先下载需要的相关包:
文件下载后,更改文件名:
mv apache-tomcat-8.5.23.tar.gz apache-tomcat.tar.gz
mv opengrok-1.1-rc15.tar.gz opengrok.tar.gz
写 Dockerfile
镜像选择比较小的 apline,使用opengrok 需要 java 和 ctags 支持,同时需要 git/svn,因此需要在 Dockerfile 中添加对应的安装指令。
同时需要将环境文件,启动文件COPY进镜像。
Dockerfile 说明
本 Dockerfile 对应的镜像为: https://hub.docker.com/r/bbxytl/opengrok/
文件说明
- Dockerfile: 镜像文件
- bashrc: 启动镜像需要的配置环境
- start-run: 启动脚本
- docker-compose.yml:
docker-compose up
命令需要的配置文件 -
see-code.sh
: 启动容器的命令项脚本 - packs:
- apache-tomcat.tar.gz: 下载好的 tomcat 压缩包(这里的包为: apache-tomcat-8.5.23.tar.gz)
- opengrok.tar.gz: 下载好的 opengrok 压缩包(这里的包为: opengrok-1.1-rc15.tar.gz)
- 上面的压缩包也可以自己去下载,下载完后,修改为对应的上面的名字放到 packs 里即可使用
镜像说明
镜像使用的Dockerfile为: https://github.com/bbxytldocker/opengrok
使用镜像
- 使用
see-code.sh
启动, 增加 查看的项目代码
打开see-code.sh
文件,添加参数-v
后跟要挂载的目录到/projects
下
sh ./see-code.sh
- 使用
docker-compose up -d 命令
, 增加 查看的项目代码
打开docker-compose.yml
文件,在volumes
下添加对应的项目,映射到/projects
下
文件内容
这里注一下Dockerfile、bashrc、start-run的文件内容,其他的请查看GitHub对应仓库 https://github.com/bbxytldocker/opengrok
- Dockerfile:
# Simple Dockerfile
FROM alpine:latest
MAINTAINER bbxytl <bbxytl@gmail.com>
# Modify the Repository
RUN cd /etc/apk/ \
&& mv repositories repositories.bk \
&& echo "http://mirrors.ustc.edu.cn/alpine/v3.5/main" > repositories \
&& echo "http://mirrors.ustc.edu.cn/alpine/v3.5/community" >> repositories
RUN apk add --no-cache --update \
ctags \
bash \
git \
subversion \
git-svn \
openjdk8 \
# Cleanup
&& rm -rf \
/tmp/* \
/var/cache/* \
/var/log/* \
/var/tmp/* \
&& mkdir /var/cache/apk
COPY ./packs/apache-tomcat.tar.gz /tmp/
COPY ./packs/opengrok.tar.gz /tmp/
COPY ./bashrc /tmp/
RUN cd /tmp/ \
&& mv bashrc ~/.bashrc \
&& mkdir -p /projects \
&& mkdir -p /opengrok/packs \
&& mkdir -p /opengrok/index-data
COPY ./start-run /usr/local/bin/start-run
ENV TERM=xterm-256color
ENTRYPOINT ["sh", "/usr/local/bin/start-run"]
- bashrc
export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
export JRE_HOME=$JAVA_HOME/jre
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export OPENGROK_TOMCAT_BASE=/opengrok/packs/apache-tomcat
export OPENGROK_VERBOSE=true
export OPENGROK_INSTANCE_BASE=/opengrok/index-data
alias deploy="/opengrok/packs/apache-tomcat/bin/startup.sh \
&& /opengrok/packs/opengrok/bin/OpenGrok deploy"
alias index="/opengrok/packs/opengrok/bin/OpenGrok index /projects"
start-run
#! /bin/sh
cd /tmp/ \
&& tar xzf apache-tomcat.tar.gz -C /opengrok/packs \
&& tar xzf opengrok.tar.gz -C /opengrok/packs \
&& cd /opengrok/packs \
&& mv apache-tomcat* /opengrok/packs/apache-tomcat \
&& mv opengrok* /opengrok/packs/opengrok
source ~/.bashrc
/opengrok/packs/apache-tomcat/bin/startup.sh \
&& /opengrok/packs/opengrok/bin/OpenGrok deploy \
&& sleep 3 \
&& /opengrok/packs/opengrok/bin/OpenGrok index /projects
bash
插件推荐
在 有哪些不错的大型项目代码浏览工具? 里出现的可以直接在谷歌浏览器里做标注的插件为: Diigo Chrome extension