티스토리 뷰

728x90

1. Docker Compose를 이용한 OpenGrok 설치

OpenGrok을 Docker Compose를 통해 간편하게 설치하고 실행할 수 있습니다.

1.1 Docker Compose 파일 작성

먼저, docker-compose.yml 파일을 생성하고 다음 내용을 추가합니다.

version: "3"
services:
  opengrok:
    container_name: opengrok
    image: opengrok/docker:latest
    ports:
      - "9999:8080"
    environment:
      SYNC_PERIOD_MINUTES: "60"
    volumes:
      - ~/opengrok/src:/opengrok/src
      - ~/opengrok/etc:/opengrok/etc
      - ~/opengrok/data:/opengrok/data

1.2 컨테이너 실행

docker-compose up -d

이제 OpenGrok이 http://localhost:9999/source/에서 실행됩니다.


2. Ctags 인식 문제 해결

OpenGrok은 Universal Ctags를 사용하여 코드 분석을 수행합니다. 하지만 컨테이너 내부에서 ctags가 설치되어 있음에도 불구하고 OpenGrok이 이를 인식하지 못하는 문제가 발생할 수 있습니다.

2.1 컨테이너 내부에서 Ctags 확인

docker exec -it opengrok sh
which ctags
ctags --version

만약 which ctags 결과가 비어 있거나 command not found 오류가 발생하면 Ctags가 설치되지 않았을 가능성이 있습니다.

2.2 Universal Ctags 설치 (필요 시)

apt update && apt install -y universal-ctags

2.3 Ctags 경로 확인 후 OpenGrok에 반영

Ctags가 /usr/local/bin/ctags에 위치하는 경우, 다음 명령어로 OpenGrok이 이를 인식하도록 설정합니다.

docker exec opengrok java -jar /opengrok/lib/opengrok.jar \
    -c /usr/local/bin/ctags \
    -s /opengrok/src \
    -d /opengrok/data \
    -H -P -S -G \
    -W /opengrok/etc/configuration.xml

3. 인덱싱 및 컨테이너 재시작

OpenGrok이 새로운 프로젝트를 반영하려면 인덱싱을 수행한 후 컨테이너를 재시작해야 합니다.

3.1 인덱싱 실행

docker exec opengrok java -jar /opengrok/lib/opengrok.jar \
    -c /usr/local/bin/ctags \
    -s /opengrok/src \
    -d /opengrok/data \
    -H -P -S -G \
    -W /opengrok/etc/configuration.xml

3.2 컨테이너 재시작

docker restart opengrok

이를 통해 인덱싱 결과가 웹 UI에 정상적으로 반영됩니다.


4. 최종 확인

이제 브라우저에서 다음 주소로 접속하여 OpenGrok이 정상적으로 동작하는지 확인합니다.

🔗 http://localhost:9999

검색 기능이 정상적으로 동작하는지 테스트하고, 새로운 프로젝트가 반영되었는지 확인하세요.


5. 자동화 (한 번에 실행)

다음 명령어를 사용하면 재인덱싱 후 자동으로 OpenGrok을 재시작할 수 있습니다.

docker exec opengrok java -jar /opengrok/lib/opengrok.jar \
    -c /usr/local/bin/ctags \
    -s /opengrok/src \
    -d /opengrok/data \
    -H -P -S -G \
    -W /opengrok/etc/configuration.xml && docker restart opengrok

이제 OpenGrok이 자동으로 최신 상태를 유지할 수 있습니다!

728x90
댓글