Docker 컨테이너에서 실행되는 GitLab 구성
Offering: GitLab Self-Managed
이 컨테이너는 공식 Linux 패키지를 사용하므로 고유한 구성 파일 /etc/gitlab/gitlab.rb를 사용하여 인스턴스를 구성할 수 있습니다. GitLab 구성 파일에 접근하려면 실행 중인 컨테이너의 컨텍스트에서 셸 세션을 시작할 수 있습니다.
이 컨테이너는 공식 Linux 패키지를 사용하므로 고유한 구성 파일 /etc/gitlab/gitlab.rb를 사용하여 인스턴스를 구성할 수 있습니다.
구성 파일 편집#
GitLab 구성 파일에 접근하려면 실행 중인 컨테이너의 컨텍스트에서 셸 세션을 시작할 수 있습니다.
-
세션을 시작합니다:
sudo docker exec -it gitlab /bin/bash또는 편집기에서 직접
/etc/gitlab/gitlab.rb를 열 수 있습니다:sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb -
선호하는 텍스트 편집기에서
/etc/gitlab/gitlab.rb를 열고 다음 필드를 업데이트합니다:-
GitLab 인스턴스의 유효한 URL로
external_url필드를 설정합니다. -
GitLab에서 이메일을 받으려면 SMTP 설정을 구성합니다. GitLab Docker 이미지에는 사전 설치된 SMTP 서버가 없습니다.
-
원하는 경우 HTTPS를 활성화합니다.
-
-
파일을 저장하고 컨테이너를 재시작하여 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 서비스를 노출하려면:
-
다음
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 문서에서 수신 포트 노출에 대한 자세한 내용을 읽어보세요. -
실행 중인 컨테이너에 들어갑니다:
sudo docker exec -it gitlab /bin/bash -
편집기에서
/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 문서를 참조하세요. -
SSH 포트를 설정합니다:
gitlab_rails['gitlab_shell_ssh_port'] = 2424 -
마지막으로 GitLab을 재구성합니다:
gitlab-ctl reconfigure
이전 예시에 따라 웹 브라우저는 <hostIP>:8929에서 GitLab 인스턴스에 접근할 수 있으며 포트 2424에서 SSH를 통해 푸시할 수 있습니다.
Docker compose 섹션에서 다른 포트를 사용하는 docker-compose.yml 예시를 볼 수 있습니다.
여러 데이터베이스 연결 구성#
GitLab 16.0부터 GitLab은 기본적으로 동일한 PostgreSQL 데이터베이스를 가리키는 두 개의 데이터베이스 연결을 사용합니다.
어떤 이유로든 단일 데이터베이스 연결로 돌아가려면:
-
컨테이너 내에서
/etc/gitlab/gitlab.rb를 편집합니다:sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb -
다음 줄을 추가합니다:
gitlab_rails['databases']['ci']['enable'] = false -
컨테이너를 재시작합니다:
sudo docker restart gitlab
다음 단계#
설치를 구성한 후 인증 옵션 및 신규 사용자 계정 제한을 포함하여 권장하는 다음 단계를 수행하는 것을 고려하세요.
