InfoGrab Docs

Docker 컨테이너에서 실행되는 GitLab 구성

요약

이 컨테이너는 공식 Linux 패키지를 사용하므로 고유한 구성 파일 /etc/gitlab/gitlab.rb를 사용하여 인스턴스를 구성할 수 있습니다. GitLab 구성 파일에 접근하려면 실행 중인 컨테이너의 컨텍스트에서 셸 세션을 시작할 수 있습니다.

이 컨테이너는 공식 Linux 패키지를 사용하므로 고유한 구성 파일 /etc/gitlab/gitlab.rb를 사용하여 인스턴스를 구성할 수 있습니다.

구성 파일 편집#

GitLab 구성 파일에 접근하려면 실행 중인 컨테이너의 컨텍스트에서 셸 세션을 시작할 수 있습니다.

  1. 세션을 시작합니다:

    sudo docker exec -it gitlab /bin/bash
    

    또는 편집기에서 직접 /etc/gitlab/gitlab.rb를 열 수 있습니다:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
    
  2. 선호하는 텍스트 편집기에서 /etc/gitlab/gitlab.rb를 열고 다음 필드를 업데이트합니다:

    1. GitLab 인스턴스의 유효한 URL로 external_url 필드를 설정합니다.

    2. GitLab에서 이메일을 받으려면 SMTP 설정을 구성합니다. GitLab Docker 이미지에는 사전 설치된 SMTP 서버가 없습니다.

    3. 원하는 경우 HTTPS를 활성화합니다.

  3. 파일을 저장하고 컨테이너를 재시작하여 GitLab을 재구성합니다:

    sudo docker restart gitlab
    

GitLab은 컨테이너가 시작될 때마다 자체적으로 재구성됩니다. GitLab의 추가 구성 옵션은 구성 문서를 참조하세요.

Docker 컨테이너 사전 구성#

GITLAB_OMNIBUS_CONFIG 환경 변수를 Docker 실행 명령에 추가하여 GitLab Docker 이미지를 사전 구성할 수 있습니다. 이 변수는 컨테이너의 gitlab.rb 파일을 로드하기 전에 평가되는 모든 gitlab.rb 설정을 포함할 수 있습니다. 이 동작을 통해 외부 GitLab URL을 구성하고 Linux 패키지 템플릿의 데이터베이스 구성 또는 기타 옵션을 만들 수 있습니다. GITLAB_OMNIBUS_CONFIG에 포함된 설정은 gitlab.rb 구성 파일에 기록되지 않고 로드 시 평가됩니다. 여러 설정을 제공하려면 콜론(;)으로 구분하세요.

다음 예시는 외부 URL을 설정하고 LFS를 활성화하며 Prometheus에 필요한 최소 shm 크기로 컨테이너를 시작합니다:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'; gitlab_rails['lfs_enabled'] = true;" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

docker run 명령을 실행할 때마다 GITLAB_OMNIBUS_CONFIG 옵션을 제공해야 합니다. GITLAB_OMNIBUS_CONFIG의 내용은 후속 실행 간에 보존되지 않습니다.

공개 IP 주소에서 GitLab 실행#

--publish 플래그를 수정하여 Docker가 IP 주소를 사용하고 모든 트래픽을 GitLab 컨테이너로 전달하도록 만들 수 있습니다.

IP 198.51.100.1에서 GitLab을 노출하려면:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
  --publish 198.51.100.1:443:443 \
  --publish 198.51.100.1:80:80 \
  --publish 198.51.100.1:22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

그러면 http://198.51.100.1/https://198.51.100.1/에서 GitLab 인스턴스에 접근할 수 있습니다.

다른 포트에서 GitLab 노출#

GitLab은 컨테이너 내부의 특정 포트를 사용합니다.

기본 포트 80(HTTP), 443(HTTPS), 22(SSH)와 다른 호스트 포트를 사용하려면 docker run 명령에 별도의 --publish 지시문을 추가해야 합니다.

예를 들어 호스트의 포트 8929에서 웹 인터페이스를 노출하고 포트 2424에서 SSH 서비스를 노출하려면:

  1. 다음 docker run 명령을 사용합니다:

    sudo docker run --detach \
      --hostname gitlab.example.com \
      --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2424" \
      --publish 8929:8929 --publish 2424:22 \
      --name gitlab \
      --restart always \
      --volume $GITLAB_HOME/config:/etc/gitlab \
      --volume $GITLAB_HOME/logs:/var/log/gitlab \
      --volume $GITLAB_HOME/data:/var/opt/gitlab \
      --shm-size 256m \
      gitlab/gitlab-ee:<version>-ee.0
    

    [!note] 포트 게시 형식은 hostPort:containerPort입니다. Docker 문서에서 수신 포트 노출에 대한 자세한 내용을 읽어보세요.

  2. 실행 중인 컨테이너에 들어갑니다:

    sudo docker exec -it gitlab /bin/bash
    
  3. 편집기에서 /etc/gitlab/gitlab.rb를 열고 external_url을 설정합니다:

    # For HTTP
    external_url "http://gitlab.example.com:8929"
    
    or
    
    # For HTTPS (notice the https)
    external_url "https://gitlab.example.com:8929"
    

    이 URL에 지정된 포트는 Docker가 호스트에 게시한 포트와 일치해야 합니다. 또한 nginx['listen_port']에 NGINX 수신 포트가 명시적으로 설정되지 않은 경우 external_url이 대신 사용됩니다. 자세한 내용은 NGINX 문서를 참조하세요.

  4. SSH 포트를 설정합니다:

    gitlab_rails['gitlab_shell_ssh_port'] = 2424
    
  5. 마지막으로 GitLab을 재구성합니다:

    gitlab-ctl reconfigure
    

이전 예시에 따라 웹 브라우저는 <hostIP>:8929에서 GitLab 인스턴스에 접근할 수 있으며 포트 2424에서 SSH를 통해 푸시할 수 있습니다.

Docker compose 섹션에서 다른 포트를 사용하는 docker-compose.yml 예시를 볼 수 있습니다.

여러 데이터베이스 연결 구성#

GitLab 16.0부터 GitLab은 기본적으로 동일한 PostgreSQL 데이터베이스를 가리키는 두 개의 데이터베이스 연결을 사용합니다.

어떤 이유로든 단일 데이터베이스 연결로 돌아가려면:

  1. 컨테이너 내에서 /etc/gitlab/gitlab.rb를 편집합니다:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
    
  2. 다음 줄을 추가합니다:

    gitlab_rails['databases']['ci']['enable'] = false
    
  3. 컨테이너를 재시작합니다:

    sudo docker restart gitlab
    

다음 단계#

설치를 구성한 후 인증 옵션 및 신규 사용자 계정 제한을 포함하여 권장하는 다음 단계를 수행하는 것을 고려하세요.

Docker 컨테이너에서 실행되는 GitLab 구성

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

이 컨테이너는 공식 Linux 패키지를 사용하므로 고유한 구성 파일 /etc/gitlab/gitlab.rb를 사용하여 인스턴스를 구성할 수 있습니다. GitLab 구성 파일에 접근하려면 실행 중인 컨테이너의 컨텍스트에서 셸 세션을 시작할 수 있습니다.

이 컨테이너는 공식 Linux 패키지를 사용하므로 고유한 구성 파일 /etc/gitlab/gitlab.rb를 사용하여 인스턴스를 구성할 수 있습니다.

구성 파일 편집#

GitLab 구성 파일에 접근하려면 실행 중인 컨테이너의 컨텍스트에서 셸 세션을 시작할 수 있습니다.

  1. 세션을 시작합니다:

    sudo docker exec -it gitlab /bin/bash
    

    또는 편집기에서 직접 /etc/gitlab/gitlab.rb를 열 수 있습니다:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
    
  2. 선호하는 텍스트 편집기에서 /etc/gitlab/gitlab.rb를 열고 다음 필드를 업데이트합니다:

    1. GitLab 인스턴스의 유효한 URL로 external_url 필드를 설정합니다.

    2. GitLab에서 이메일을 받으려면 SMTP 설정을 구성합니다. GitLab Docker 이미지에는 사전 설치된 SMTP 서버가 없습니다.

    3. 원하는 경우 HTTPS를 활성화합니다.

  3. 파일을 저장하고 컨테이너를 재시작하여 GitLab을 재구성합니다:

    sudo docker restart gitlab
    

GitLab은 컨테이너가 시작될 때마다 자체적으로 재구성됩니다. GitLab의 추가 구성 옵션은 구성 문서를 참조하세요.

Docker 컨테이너 사전 구성#

GITLAB_OMNIBUS_CONFIG 환경 변수를 Docker 실행 명령에 추가하여 GitLab Docker 이미지를 사전 구성할 수 있습니다. 이 변수는 컨테이너의 gitlab.rb 파일을 로드하기 전에 평가되는 모든 gitlab.rb 설정을 포함할 수 있습니다. 이 동작을 통해 외부 GitLab URL을 구성하고 Linux 패키지 템플릿의 데이터베이스 구성 또는 기타 옵션을 만들 수 있습니다. GITLAB_OMNIBUS_CONFIG에 포함된 설정은 gitlab.rb 구성 파일에 기록되지 않고 로드 시 평가됩니다. 여러 설정을 제공하려면 콜론(;)으로 구분하세요.

다음 예시는 외부 URL을 설정하고 LFS를 활성화하며 Prometheus에 필요한 최소 shm 크기로 컨테이너를 시작합니다:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'; gitlab_rails['lfs_enabled'] = true;" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

docker run 명령을 실행할 때마다 GITLAB_OMNIBUS_CONFIG 옵션을 제공해야 합니다. GITLAB_OMNIBUS_CONFIG의 내용은 후속 실행 간에 보존되지 않습니다.

공개 IP 주소에서 GitLab 실행#

--publish 플래그를 수정하여 Docker가 IP 주소를 사용하고 모든 트래픽을 GitLab 컨테이너로 전달하도록 만들 수 있습니다.

IP 198.51.100.1에서 GitLab을 노출하려면:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
  --publish 198.51.100.1:443:443 \
  --publish 198.51.100.1:80:80 \
  --publish 198.51.100.1:22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

그러면 http://198.51.100.1/https://198.51.100.1/에서 GitLab 인스턴스에 접근할 수 있습니다.

다른 포트에서 GitLab 노출#

GitLab은 컨테이너 내부의 특정 포트를 사용합니다.

기본 포트 80(HTTP), 443(HTTPS), 22(SSH)와 다른 호스트 포트를 사용하려면 docker run 명령에 별도의 --publish 지시문을 추가해야 합니다.

예를 들어 호스트의 포트 8929에서 웹 인터페이스를 노출하고 포트 2424에서 SSH 서비스를 노출하려면:

  1. 다음 docker run 명령을 사용합니다:

    sudo docker run --detach \
      --hostname gitlab.example.com \
      --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2424" \
      --publish 8929:8929 --publish 2424:22 \
      --name gitlab \
      --restart always \
      --volume $GITLAB_HOME/config:/etc/gitlab \
      --volume $GITLAB_HOME/logs:/var/log/gitlab \
      --volume $GITLAB_HOME/data:/var/opt/gitlab \
      --shm-size 256m \
      gitlab/gitlab-ee:<version>-ee.0
    

    [!note] 포트 게시 형식은 hostPort:containerPort입니다. Docker 문서에서 수신 포트 노출에 대한 자세한 내용을 읽어보세요.

  2. 실행 중인 컨테이너에 들어갑니다:

    sudo docker exec -it gitlab /bin/bash
    
  3. 편집기에서 /etc/gitlab/gitlab.rb를 열고 external_url을 설정합니다:

    # For HTTP
    external_url "http://gitlab.example.com:8929"
    
    or
    
    # For HTTPS (notice the https)
    external_url "https://gitlab.example.com:8929"
    

    이 URL에 지정된 포트는 Docker가 호스트에 게시한 포트와 일치해야 합니다. 또한 nginx['listen_port']에 NGINX 수신 포트가 명시적으로 설정되지 않은 경우 external_url이 대신 사용됩니다. 자세한 내용은 NGINX 문서를 참조하세요.

  4. SSH 포트를 설정합니다:

    gitlab_rails['gitlab_shell_ssh_port'] = 2424
    
  5. 마지막으로 GitLab을 재구성합니다:

    gitlab-ctl reconfigure
    

이전 예시에 따라 웹 브라우저는 <hostIP>:8929에서 GitLab 인스턴스에 접근할 수 있으며 포트 2424에서 SSH를 통해 푸시할 수 있습니다.

Docker compose 섹션에서 다른 포트를 사용하는 docker-compose.yml 예시를 볼 수 있습니다.

여러 데이터베이스 연결 구성#

GitLab 16.0부터 GitLab은 기본적으로 동일한 PostgreSQL 데이터베이스를 가리키는 두 개의 데이터베이스 연결을 사용합니다.

어떤 이유로든 단일 데이터베이스 연결로 돌아가려면:

  1. 컨테이너 내에서 /etc/gitlab/gitlab.rb를 편집합니다:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
    
  2. 다음 줄을 추가합니다:

    gitlab_rails['databases']['ci']['enable'] = false
    
  3. 컨테이너를 재시작합니다:

    sudo docker restart gitlab
    

다음 단계#

설치를 구성한 후 인증 옵션 및 신규 사용자 계정 제한을 포함하여 권장하는 다음 단계를 수행하는 것을 고려하세요.