version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost:80'
ports:
- '8880:80'
- '8443:443'
- '8822:22'
volumes:
- './gitlab/config:/etc/gitlab'
- './gitlab/logs:/var/log/gitlab'
- './gitlab/data:/var/opt/gitlab'
- './gitlab/backup:/var/opt/gitlab/backups'
shm_size: '256m'
중요하게 볼 점은 external_url 설정과, 포트 설정입니다.
docker를 사용할 것이기 때문에 external_url의 주소를 서버 컴퓨터의 주소 혹은 80포트와 포트포워딩 된 주소를 적는 것이 아닌, docker 컨테이너 내부의 80인 localhost:80으로 설정해야합니다.
포트는 기본 포트(80)과 https(443), ssh(22)를 연결해야합니다.
sudo docker-compose up -d
도커 컨테이너를 띄운 뒤, 서버 컴퓨터의 주소 및 포트로 접속하면 깃랩의 로그인 페이지가 나옵니다.
# docker exec -it {컨테이너 이름} /bin/bash
# gitlab-rails console -e production
# user = User.where(id: 1).first
위 명령어들을 통해 깃랩의 1번 유저의 계정을 조회할 수 있다.
id가 1번인 유저의 이름은 root인걸 확인할 수 있다.
# user.password = '변경할 비밀번호'
# user.password_confirmation = '변경할 비밀번호'
# user.save
위 명령어를 통해 비밀번호를 변경해주고 저장한 뒤, 깃랩 로그인 페이지에 입력해 접속할 수 있다.
로그인에 성공하면 화면 상단에 알림이 뜨는데, 이건 현재는 누구나 깃 랩에 가입을 할 수 있는 상황이고, 이것은 보안적으로 위험하니까 비활성화 하라는 뜻입니다.
Deactive를 누르면 설정 페이지로 이동하고, 여기서 "Sign-up restrictions" 탭에
"Sign-up enavbled"의 체크를 해제해줄 수 있습니다.
좌측에 메뉴바의 상단에 +버튼을 눌러 "New project/repository"를 선택.
"Create blank proejct" 선택.
프로젝트 이름을 지정 및 기타 설정을 한 후 프로젝트를 생선합니다.
생성이 완료되면 깃허브와 비슷한 UI로 프로젝트가 생성되는 것을 확인할 수 있습니다.
기본적인 remote 지정은 README.md에 있는 것을 따라하면 됩니다.
단, 우리는 도커 컨테이너를 사용하고 있기 때문에, remote 저장소의 url을 localhost가 아닌 도커 컨테이너가 있는 서버의 주소와 포트로 설정해야합니다.
# git remote add origin {서버주소}:{도커 컨테이너 포트}/root/my-project.git
이후 커밋까지 한 후 push하면 저장소에 업로드가 됩니다.
# git add .
# git commit -m "first commit"
# git push origin main
push 시 SSH를 설정하지 않았다면 깃랩의 usename과 password를 입력한 뒤 push 할 수 있습니다.
하지만 이렇게 한다면, push 에러가 발생합니다. 그 이유는 main 브랜치의 Protected 되어 있기 때문입니다.
해당 설정은 GitLab Project -> Settings -> Repository -> Protected Branches -> Unprotect -> Unprotect branch 를 통해 Protected를 해제시킬 수 있습니다.
하지만 main 브랜치는 Protected 설정이 되어 있는 것이 좋기 때문에, 이후 다시 설정을 하고, 다른 브랜치를 push하여 merge하는 전략이 더 좋다고 생각합니다.!