Open Grok+Docker로 일회용 소스 검색 엔진 만들기
미리 준비하다
안드로이드 소스 코드 검색 등 사용OpenGrok은 대규모 소스를 대상으로 검색하려고 할 때 편리하다.
다만
"Rspec의 subject는 어떻게 설치되었나요?"
"Rocket. Chat 파일 업로드는 어디에서 어떤 구조로 작동할까요?"
갑자기 찾고 싶은 게 생겼어요.
그때는 기존 안드로이드 관련 창고까지 색인을 업데이트해야 해 시간이 많이 걸렸지만 소용이 없었다.
그렇긴 한데, Open Grok을 새로 짓는 것도 힘들다.
그래서 나는 Docker로 그것을 다 쓰면 된다고 생각해서 그것과 비슷한 것을 만들어 보았다.
Docker에 가입하면 3단계를 완성할 수 있습니다!
0단계: 먼저 Docker pull
docker pull yusukeiwaki/opengrok-repo
이거 처음부터 하면 OK.1단계: 가져올 소스 코드의 창고 목록 만들기
그게 포인트야.
yusukeiwaki/opengrok-repo
원본 동기화에서 리포 사용Rspec 같은 경우는...
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github" fetch="https://github.com/" />
<default revision="master" remote="github" />
<project name="rails/rails.git" path="rails" />
<project name="rspec/rspec-core.git" path="rspec-core" />
<project name="rspec/rspec-expectations.git" path="rspec-expectations" />
<project name="rspec/rspec-support.git" path="rspec-support" />
<project name="rspec/rspec-mocks.git" path="rspec-mocks" />
</manifest>
라켓채트라면.<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github" fetch="https://github.com/" />
<default revision="master" remote="github" />
<project name="meteor/meteor.git" path="meteor" revision="devel" />
<project name="RocketChat/Rocket.Chat.git" path="Rocket.Chat" revision="develop" />
<project name="RocketChat/Rocket.Chat.Android.git" path="Rocket.Chat.Android" revision="develop" />
<project name="RocketChat/Rocket.Chat.iOS.git" path="Rocket.Chat.iOS" revision="develop" />
</manifest>
이런 느낌으로 검색 대상으로 삼고 싶은 창고 일람을 만든다.gist로 만들어졌습니다. 파일 이름은default입니다.xml이죠?
XML 형식아무래도 직감으로 알 것 같지?거칠다
모르면 내 마음대로 쓰는 녀석를 보거나'repo init default.xml'제가 한번 볼게요.을 보십시오
2단계: 컨테이너 만들기
Gist의 https URL 복사
docker run -d -it -p 8080:8080 --env REPO_INIT_URL=https://gist.github.com/d7b049db19fb0286d0ace905a608d562.git yusukeiwaki/opengrok-repo
가상 머신(컨테이너)을 만듭니다.대략 몇 초 안에 완성할 수 있다.
3단계: 동기화 및 색인 소스
docker exec -it コンテナID /bin/bash
# update_repo
거기 놔둬.잠시 후
http://<あなたのホスト>:8080/source/
소스 검색이 가능한 상태의 Open Grok이 완료됩니다.사은품: GNU screen을 사용하고 싶을 때
update_repo
시간이 오래 걸립니다.따라서 GNU screen을 사용하려면# apt-get install -y screen
# exec >/dev/tty 2>/dev/tty </dev/tty
# screen update_repo
이렇게 하면 컨테이너를 꺼내 완전히 놓을 수 있다.※ 엑시소스는Docker에서 screen의 사용이 필요한 것 같아요.
추가 2: 안드로이드의 소스 코드 검색도 가능한가요?
docker run -d -it -p 8080:8080 --env REPO_INIT_URL="https://android.googlesource.com/platform/manifest -b android-7.1.1_r13" yusukeiwaki/opengrok-repo
이러한 명령을 입력하면 안드로이드의 소스 코드를 쉽게 검색할 수 있습니다...(검증되지 않음)총결산
아무튼 잘 활용
repo
하고 인프라인 아사 코드가 아닌'검색엔진 아사 코드'인 일을 해봤습니다.default.xml을 준비하고 2, 3개의 지령만 하면 바로 원본 검색엔진을 만들 수 있어서 나는 상당히 편리하다고 생각한다.
Dockerfile 보는 사람이 상당히 보기 싫으면 Pull Request 등이 있으면 기다릴게요!w
Reference
이 문제에 관하여(Open Grok+Docker로 일회용 소스 검색 엔진 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YusukeIwaki/items/3f855202e9c00247d5c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)