Gitea on Docker

1. 서론.

  • 파일의 변경 이력을 남겨야 하는 경우가 있습니다. 특히 IT 분야에서는 이슈 발생 시 이력을 확인해서 대응하는 일이 기본입니다. 누가 변경했는지도 확인되므로 해당 담당자를 통해 빠르게 처리 가능하고요.
  • 여러 툴들이 있지만 현재 Git이 주로 사용되며, Git에 대한 설명은 Git Book에 잘 정리되어 있습니다.
  • 리눅스를 개발한 리누스 토발즈가 소스코드 관리 툴인 BitKeeper를 이용하다가 문제가 발생해 별도로 단기간에 만들었다고 하죠(해당 인터뷰).
  • 이후 여러 서비스들이 생겨났고, GitHubGitLab이 주로 사용됩니다.
  • 초기에 GitHub은 Git의 기능과 이슈 커뮤니케이션에 초점을 둔 반면 GitLab은 CI/CD까지 포함한 프로젝트 통합 관리 서비스 성격이 강했지만, 여러 기능들이 추가되고 발전하면서 그러한 성격이 많이 희석되었습니다.
  • GitLab은 오픈소스이며, GitHub은 오픈소스가 아니지만 중국에서 그대로 카피한 Gitea가 오픈소스로 개발되어 서비스 중입니다.
  • Git은 분산 저장소라서 싱크만 된다면 어디에 위치하던 관계 없습니다. .git 디렉토리가 저장소이며, 복사하면 그것 또한 저장소로 사용할 수 있습니다. Getting Git on a Server를 참고해 보세요.
  • 개인 소스코드 저장소를 git으로 전환한 이후 개인 서버에 두고 이용하다가, 협업 시 사용자 권한 제어가 필요해 Gitolite를 이용하다가, CI/CD까지 겸비한 GiLab을 이용하다가, 이슈관리 UI가 편한 GitHub에 익숙해진 뒤, Gitea를 이용하게 되었습니다.
  • 개인 서버에 설치해서 사용해보니 GitHub의 UX를 거의 그대로 사용할 수 있어서 메인 소스코드 서비스로 이용하고 있습니다.

 

2. Gitea on Docker.

2-1. 문서.

2-2. Docker compose로 실행.

  • Docker compose로 아래 명령어와 같이 간단히 실행할 수 있습니다.
  • Docker non-root user를 docker-user로 지정했습니다.
  • 모든 데이터가 컨테이너의 /data 디렉토리에 저장되므로, 데이터 유지를 위해 볼륨을 마운트 해줍니다.
      $ su - docker-user
      $ mkdir -p ~/workspace/gitea/data
      $ cd ~/workspace/gitea
      $ vi docker-compose.yml
          version: "3"
          services:
              gitea:
                  image: gitea/gitea:1.22.0
                  container_name: gitea
                  restart: unless-stopped
                  environment:
                      - TZ=Asia/Seoul
                      - LANG=ko_KR.UTF-8
                      - LANGUAGE=ko_KR:ko:en_US:en
                      - LC_ALL=ko_KR.UTF-8
                      - USER_UID=${UID}
                      - USER_GID=${GID}
                  volumes:
                      - ./data:/data
                  ports:
                      - 2222:2222
                      - 3000:3000
      $ UID=$(id -u) GID=$(id -g) docker compose -f docker-compose.yml up -d
    

 

3. 초기 설정.

  • Gitea 실행 후 웹 브라우저로 3000 포트에 처음 접속하면 초기 설정 페이지로 이동합니다.
  • 나머지 옵션들은 필요에 따라 설정하되, 도커로 매핑한 포트는 맞추어 주어야 합니다.
    • SSH 서버 포트: 2222
    • Gitea HTTP 수신 포트: 3000
    • Gitea 기본 URL: http://{ip address or domain}:3000/
  • 옵션 입력 후 'Gitea 설치하기' 버튼을 선택하면 설치가 진행됩니다. Android licenses 동의
  • 설치가 완료되면 처음에는 계정이 없으며, 처음 등록한 계정이 관리자가 됩니다. 저는 manager로 등록했습니다. Android licenses 동의
  • manager 계정으로 처음 로그인 한 화면. Android licenses 동의
0
Subscribe to my newsletter

Read articles from Albert Hongseok Gu directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Albert Hongseok Gu
Albert Hongseok Gu