Docker 컨테이너에서 실행되는 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
를 열고 다음 필드를 업데이트합니다:-
external_url
필드를
GitLab 인스턴스의 유효한 URL로 설정합니다. -
GitLab에서 이메일을 수신하려면,
SMTP 설정을 구성합니다. GitLab Docker 이미지는
기존에 SMTP 서버가 설치되어 있지 않습니다. -
필요에 따라
HTTPS를 활성화합니다.
-
-
파일을 저장하고 컨테이너를 다시 시작하여 GitLab을 재구성합니다:
sudo docker restart gitlab
GitLab은 컨테이너가 시작될 때마다 스스로를 재구성합니다.
GitLab에서 더 많은 구성 옵션에 대해서는
구성 문서를 참조하세요.
Docker 컨테이너 미리 구성하기
GitLab Docker 이미지를 미리 구성하려면,
Docker 실행 명령에 환경 변수 GITLAB_OMNIBUS_CONFIG
를 추가할 수 있습니다. 이 변수는 모든
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
의 내용은
후속 실행 간에 보존되지 않습니다.
GitLab을 공공 IP 주소에서 실행하기
Docker가 귀하의 IP 주소를 사용하고 모든 트래픽을 GitLab 컨테이너로 포워딩하도록 --publish
플래그를 수정할 수 있습니다.
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
에서 노출하고, SSH 서비스를 포트 2424
에서 노출하려면:
-
다음
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
참고: 포트를 게시하는 형식은
hostPort:containerPort
입니다. 수신 포트 노출에 대한 Docker 문서를 참조하십시오. -
실행 중인 컨테이너에 들어갑니다:
sudo docker exec -it gitlab /bin/bash
-
편집기로
/etc/gitlab/gitlab.rb
파일을 열고external_url
을 설정합니다:# HTTP용 external_url "http://gitlab.example.com:8929" 또는 # HTTPS용 (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.yml
예제를 Docker compose 섹션에서 확인할 수 있습니다.
여러 데이터베이스 연결 구성
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
다음 단계
설치를 구성한 후에는 추천하는 다음 단계를 고려하세요, 인증 옵션 및 가입 제한을 포함하여.