貢獻一個最新版的OpenGrok Docker容器
一直在本地用 {OpenGrok by OpenGrok 離線看代碼,前些天有同事在我的機器上用了一下被震撼了,也想裝一個。我心想從頭架起來要配置成完美版還是挺煩的,一堆環境變數設置還要自己編譯universal ctags,要支持多個repository也不方便。於是打算找個Docker版直接用,可是在Docker Store上轉了一圈都沒找到好的,大多版本太舊,而且用的還是exuberant-ctags。唯一一個更新到1.1rc14的(還是用的exuberant-ctags),配了一堆的SSH和自動索引任務,不適合單機用。唯有自己動手豐衣足食了,成品放在Docker Store上共享。
安裝Docker後,用以下命令啟動一個OpenGrok伺服器
docker run -it -d --name <CONTAINER NAME> -p <EXTERNAL PORT>:8080 -v <LINUX JDK HOME>:/usr/lib/jvm -v <OPENGROK DATA FOLDER>:/var/opengrok:delegated -w /app krazakee/opengrok
其中
<CONTAINER NAME>
為任意容器名稱(隨意改,如果要啟動多個伺服器查看不同代碼庫可以用名稱來管理)<EXTERNAL PORT>
為訪問伺服器的埠號<LINUX JDK HOME>
為外部的JDK目錄,請注意必須是Linux版。Windows或Mac用戶可以去Oracle官網下一個Linux的壓縮版本,隨便解壓在什麼地方,在這裡指定位置即可。<OPENGROK DATA FOLER>
是OpenGrok的工作目錄。第一次啟動伺服器前創建一個空目錄,並把一個或多個代碼項目checkout或複製到到該目錄下的src子目錄中即可。
容器啟動後 (可以用 docker ps 命令查看),使用以下命令創建索引
docker exec <CONTAINER NAME> bash -c "/opengrok/bin/OpenGrok index"
其中<CONTAINER NAME>
為啟動時指定的容器名稱。請注意首次創建索引時間可能非常漫長(我把公司的全部Java代碼堆在一個目錄里創建索引用了一天半)。
以後代碼更新了重新執行這個命令重建索引,索引是增量式的,再次執行索引少量修改速度就很快了。
建好索引後就可以在瀏覽器里用
http://localhost:<EXTERNAL PORT>/source
來訪問搜索頁面或
http://localhost:<EXTERNAL PORT>/source/xref/
來訪問項目列表。
要停止容器使用docker stop <CONTAINER NAME>
即可,停掉的容器可以用docker start <CONTAINER NAME>
重新開啟。但如果重啟了docker應用或重啟了機器,則需要用前面的docker run
指令重新啟動。
以下是我這個版本的一些參數:
- 目前最新的opengrok 1.1rc21版,另提供1.0版的tag供選用。
- Tomcat 9.0.2 (beta)
- JDK版本自選,親測8和9均可
- 使用universal ctags
- 使用Git 2.15 (避免opengrok 1.1版下一個讀取歷史記錄時拋出日期格式錯誤異常的問題)
在Chrome下配合以下插件使用風味更佳:
https://chrome.google.com/webstore/detail/super-simple-highlighter/hhlhjgianpocpoppaiihmlpgcoehlhiohttps://chrome.google.com/webstore/detail/ourstickys-sticky-notes-o/oficbemndigeiiennldcdfcklocpkggdhttps://chrome.google.com/webstore/detail/click-to-remove-element/jcgpghgjhhahcefnfpbncdmhhddedhnkhttps://chrome.google.com/webstore/detail/temporary-bookmarks/bpndllhnkhaepbdeeklhlbpinaacbjfjhttps://chrome.google.com/webstore/detail/automatic-keywords-highli/gcpknobcboilhnacklgmaamlcnblneoi
推薦閱讀: