Gitlab container registry 설치구성
윈도우11에서 도커기반으로 설치구성하였고,
사설인증서를 적용하여 https 통신이 되도록 하였습니다.
테스트로 윈도우11에서 nginx 이미지를 build하고 push까지 성공하였습니다.
먼저 https 통신을 위해 사설인증서를 준비합니다.
2025.03.30 - [devops] - 사설인증서 생성
사설인증서 생성
Gitlab 과 ArgoCD 를 https로 접근하기 위해 사설인증서를 생성합니다.웹브라우져에서 "이 연결은 안전합니다." 라고 나오게 됩니다. 사설인증서 생성저는 윈도우 git 클라이언트 설치해서 git bash 이
syjb.tistory.com
Gitlab 기동 및 설정
PS C:\Users\ky945> docker run -d --name SYgitlab `
-p 443:443 -p 80:80 `
-p 5050:5050 `
-v C:\Users\ky945\SYssl:/etc/gitlab/ssl `
gitlab/gitlab-ce:latest
# -p 443:443 -p 80:80 : Gitlab 서비스 포트로 설정합니다.
# -p 5050:5050 : 컨테이너 레지스트리 포트로 설정합니다.
# -v C:\Users\ky945\SYssl:/etc/gitlab/ssl : ssl 인증서파일을 마운트합니다.
주의!! PC에서 docker login 할때 https://gitlab.sytech.com 처럼 기본포트(443)로 접근하는게 있는거 같습니다. 호스트와 컨테이너간에 양쪽 모두 443:443 처럼 동일하게 맞춥니다.
Gitlab이 모두 기동완료되기 까지 기다립니다.
# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash
# 기동완료되기까지 모니터링 합니다.
watch gitlab-ctl status
Gitlab 설정파일 수정
# Gitlab 컨테이너에서 계속 진행합니다
# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb
# 32라인
# 외부에서 Gitlab 접근시에 사용하는 도메인주소 입력
external_url 'https://gitlab.sytech.com'
# 1721,1722 라인
# 사설인증서 파일 위치 입력
nginx['ssl_certificate'] = "/etc/gitlab/ssl/sytech.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/sytech.com.key"
# 컨테이너를 빠져 나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab
Gitlab 접속확인
PC 웹브라우져에서 https://gitlab.sytech.com 접속합니다.
로그인페이지 나오면 성공입니다
Gitlab Container Repository 설정
# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash
# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb
# 970라인
# 외부에서 Gitlab 컨테이너 레지스트리 접근시 사용하는 도메인주소 입력
registry_external_url 'https://regist.sytech.com:5050'
# 973,974,975라인
# Gitlab 컨테이너 레지스트리 활성,도메인주소,접속포트 입력
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "regist.sytech.com"
gitlab_rails['registry_port'] = "5050"
인증서 파일 복사
인증서 파일을 rename해서 복사합니다.
# 컨테이너에서 계속 진행합니다.
cd /etc/gitlab/ssl
cp sytech.com.crt regist.sytech.com.crt
cp sytech.com.key regist.sytech.com.key
# 컨테이너를 빠져나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab
주의!! 반드시 /etc/gitlab/ssl 밑에 regist.sytech.com 도메인이름이 포함된 파일로 있어야합니다.
Gitlab Container Repository 생성확인
Gitlab에 로그인합니다. 로그인 계정은 root 이고, 초기 패스워드 정보는 다음처럼 확인합니다.
# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash
# 파일에 Password 부분을 확인합니다.
grep ^Pass /etc/gitlab/initial_root_password
프로젝트를 하나 생성합니다.
Create a project -> Create blank project -> 다음처럼 입력하고 Create porject 클릭
# 프로젝트 이름
Project name : SYgitops
# 계정을 선택
Project URL : root
# 프로젝트 이름 입력되면 자동입력됩니다. 대문자는 소문자로 변환됨
Project slug : sygitops
SYgitops 선택 -> 왼쪽 Settings -> "Packages and registries" -> Container registry 보이면 성공입니다.
Gitlab Container Repository 테스트
작업 디렉토리를 생성합니다.
PS C:\Users\ky945> mkdir SYimage
PS C:\Users\ky945> cd SYimage
PS C:\Users\ky945\SYimage>
nginx 이미지에 배포할 index.html 파일을 만듭니다.
PS C:\Users\ky945\SYimage> notepad index.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>나만의 Nginx 서버</title>
</head>
<body>
<h1>환영합니다!</h1>
<p>이것은 사용자 정의 Nginx 서버의 인덱스 페이지입니다.</p>
</body>
</html>
Dockerfile을 만듭니다.
PS C:\Users\ky945\SYimage> notepad Dockerfile
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html
PC에서 docker 로그인합니다.
PS C:\Users\ky945\SYimage> docker login regist.sytech.com:5050
Username: root
Password: ********** <---- root 패스워드 입력
Login Succeeded <----- 로그인성공 확인
이미지를 빌드합니다.
# -t 태그정보에 registry 접속URL, 계정명, 프로젝트명을 정확히 입력해야합니다.
PS C:\Users\ky945\SYimage> docker build -t regist.sytech.com:5050/root/sygitops/sy-nginx:latest .
....
.... 내용생략
....
# 특별한 에러로그 없으면 성공입니다.
이미지를 push 합니다.
PS C:\Users\ky945\SYimage> docker push regist.sytech.com:5050/root/sygitops/sy-nginx:latest
Using default tag: latest
The push refers to repository [regist.sytech.com:5050/root/sygitops/sy-nginx]
62e4061d3e5b: Pushed
6e909acdb790: Pushed
5eaa34f5b9c2: Pushed
57f3c16839af: Pushed
417c4bccf534: Pushed
373fe654e984: Pushed
e7e0ca015e55: Pushed
97f5c0f51d43: Pushed
c22eb46e871a: Pushed
latest: digest: sha256:3790058d20351412ac3d8bd7e5cbdd75bca2b656c53a188a4354f98be24e48a1 size: 856
####################################################################################################
# 특별한 에러로그 없으면 성공입니다.
Gitlab에서 push 된 이미지가 보이면 성공입니다.