基于docker的OpenGrok方案

最近查找可以方便阅读代码的工具,发现了 OpenGrok 这个东东,但是这个东东需要自己去配置其服务状态。
简单来说, 要使用 OpenGrok 需要满足两个条件:

  1. 搭建一个后台来跑 OpenGrok
  2. 有个浏览器,能访问到搭建好的 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

使用镜像

  1. 使用 see-code.sh 启动, 增加 查看的项目代码
    打开 see-code.sh 文件,添加参数 -v 后跟要挂载的目录到 /projects
sh ./see-code.sh
  1. 使用 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,532评论 15 147
  • Openstack.DockerDevOps 1、Nova nova flavor-list ...
    燕京博士阅读 620评论 0 2
  • 1. 简介 Docker整个体系类似于手机系统,应用与主机、应用之间都是相互隔离,采用沙盒模式运行,一键式安装和卸...
    保持微笑_Ivan阅读 818评论 0 0
  • 真正的思考,往往是从提问开始的。一个优秀的思考者,他的提问质量一定会很高。 日本有句谚语说,发问只会造成片刻的尴尬...
    紫翼天葵阅读 159评论 0 3
  • 虽然姑娘我毕业已有4年,但说句实话,法律行业,刚刚入职那会儿,薪水低的吓人,一个月的工资自己都养活不了,只能覆盖掉...
    燕王爷阅读 327评论 0 1