基于docker的OpenGrok方案

作者: 乾九二 | 来源:发表于2017-10-12 00:10 被阅读88次

    最近查找可以方便阅读代码的工具,发现了 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

    相关文章

      网友评论

        本文标题:基于docker的OpenGrok方案

        本文链接:https://www.haomeiwen.com/subject/qzogyxtx.html