Open Grok+Docker로 일회용 소스 검색 엔진 만들기

4584 단어 DockerOpenGrok

미리 준비하다


안드로이드 소스 코드 검색 등 사용OpenGrok은 대규모 소스를 대상으로 검색하려고 할 때 편리하다.
다만
"Rspec의 subject는 어떻게 설치되었나요?"
"Rocket. Chat 파일 업로드는 어디에서 어떤 구조로 작동할까요?"
갑자기 찾고 싶은 게 생겼어요.
  • Giit 웨어하우스 추가
  • 색인 추가
  • 이렇게 하는 거지만.
    그때는 기존 안드로이드 관련 창고까지 색인을 업데이트해야 해 시간이 많이 걸렸지만 소용이 없었다.
    그렇긴 한데, 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

    좋은 웹페이지 즐겨찾기