基于docker的OpenGrok方案

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

  1. 搭建一个后台来跑 OpenGrok
  2. 有个浏览器,能访问到搭建好的 OpenGrok

至于什么是 OpenGrok,参见知乎 有哪些不错的大型项目代码浏览工具? 。

由于不想搭一次只能用一次,另外不想在mac装太多东西,所以使用了 docker 来进行搭建。

下面是搭建步骤:

先下载需要的相关包:

  • 【tomcat】: 下载 apache-tomcat-8.5.23.tar.gz
  • 【opengrok】: 下载 opengrok-1.1-rc15.tar.gz

文件下载后,更改文件名:

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 

# 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

你可能感兴趣的:(基于docker的OpenGrok方案)