TOOL/Docker 2019. 12. 20. 15:23

Docker

1. 'GitLab-CE' Container 생성

개발할 때 이만한 게 또 있으랴..

GitLabGitLab-RUNNER(필수 아님!)까지 구성하여 GitLab-CI환경까지 완성하면 정말 개발환경구축 대만족!!

안타깝게도! GitLab-RUNNER를 Docker for Windows로 구축하는 것을 실패하였지만.. (Windows 설치법 참조: https://forgiveall.tistory.com/553)

GitLab은 Docker for Windows로 설치 성공!! (참조: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2280#note_154400745)

1. logs volume 생성
docker volume create gitlab-logs
2. data volume 생성
docker volume create gitlab-data
3. GitLab Container 생성
docker run --detach ` 
    --name gitlab ` 
    --restart always ` 
    --hostname localhost ` 
    --publish 443:443 --publish 80:80 --publish 4422:22 ` 
    --volume C:\Docker-GitLab:/etc/gitlab ` 
    --volume gitlab-logs:/var/log/gitlab ` 
    --volume gitlab-data:/var/opt/gitlab ` 
    gitlab/gitlab-ce 
  • 설명
    • Docker for WindowsLinux Container Mode에서 테스트되었으며, 위 명령을 그대로 긁어서 Powershell에 투척해서 사용하면 된다!!
    • --detach-D와 같은 옵션이다. run(실행)을 할 때 바로 Terminal이 Docker Container영역에서 벗어나도록 한다. (docker logs gitlab 명령으로 gitlab container에서 일어나는 일을 구경할 수 있다.)
    • '`' 이것은 개행하여도 명령어가 이어짐을 말한다.
    • --restart always으로 설정하여 Docker가 재실행되어도 자동으로 해당 Container가 실행되도록 한다.
    • --hostname localhost으로... 또는 --hostname 0.0.0.0으로 설정하면 된다.
    • --volume C:\Docker-GitLab:/etc/gitlab 특정경로에 폴더를 만들어 두고 이와같이 매칭시킨다. gitlab.rb 등 설정파일을 Host PC(Windows)에서 수정할 수 있도록 매칭하는 것이다. (수정시 Container를 restart!)
    • --volume gitlab-logs:/var/log/gitlab log를 gitlab-logs라는 Volume에 저장한다.
    • --volume gitlab-data:/var/opt/gitlab data를 gitlab-data라는 Volume에 저장한다.
4. GitLab 접속해보기
http://localhost:80/

2. GitLab Config파일 재설정 (설정이 필요할 시에만 참고)

  • C:\Docker-GitLab\gitlab.rb 수정

    • 예제) 외부접속 설정

      ## GitLab URL
      ##! URL on which GitLab will be reachable.
      ##! For more details on configuring external_url see:
      ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab    
      external_url 'http://192.168.0.18'
    • 예제) Email알림을 설정 (아래는 Gmail 예시이며 Gmail에 특정권한에 대한 설정이 추가적으로 필요할 것이다.) (Email Vendor별 예제 참조: https://docs.gitlab.com/omnibus/settings/smtp.html)

      gitlab_rails['smtp_enable'] = true
      gitlab_rails['smtp_address'] = "smtp.gmail.com"
      gitlab_rails['smtp_port'] = 587
      gitlab_rails['smtp_user_name'] = "IAMGMAILUSER"
      gitlab_rails['smtp_password'] = "MYMAILPASSWORD"
      gitlab_rails['smtp_domain'] = "smtp.gmail.com"
      gitlab_rails['smtp_authentication'] = "login"
      itlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = false
      
      ###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
      ###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
      gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert', see http://api.rubyonrails.org/classes/ActionMailer/Base.html
  • 재설정 방법A:

    docker exec gitlab gitlab-ctl reconfigure
  • 재설정 방법B: container를 다시시작한다. (또는 'docker stop gitlab', 'docker rm gitlab' 을 차례로 실행후 다시 '3'번의 Docker run 명령어를 실행한다.)

      docker restart gitlab

3. Admin(root) Account - 관리자 계정 설정

관리자페이지(Admin Page)에는 관리자계정이 아니면 접근할 수 없단다.

관리자계정이 뭔지도 모르고 GitLab-CE를 설치하여 잘 사용해왔었는데.. 어느순간 급하게 필요해졌다..

그런데 대체 어떻게 관리자페이지에 들어갈 수 있는 것인지 난감했다.

인터넷 여러 글들을 뒤적여보니.. 계정ID가 admin 이라는 곳도 있고 root 라는 곳도 있고 .. 정보가 각기 다 다르다... 짜증... ㅋㅋ

그래서 나의 경험을 공유하고자 한다.

도움이 되길 바란다.

※ 나의 경험상 Admin 페이지에 들어가는 법은 이렇다.
  • GitLab 버전은 12.2.3 (13598699b0a)
  • Docker for Windows로 사용중이다.
  • 관리자계정 ID는 root이다.
  • 초기 비밀번호는 뭔지 모르지만 gitlab-rails를 통해 관리자계정의 암호를 Reset할 수 있었다.
  • 아래 과정을 순서대로
0. Reset admin account password - 관리자계정 암호 설정

터미널에서 gitlab-rails console production을 입력하고 하나씩 따라해보자.

1. Command it on Terminal
  • 이렇게 실행해보자! - 로딩하는 데 시간이 좀 걸릴 수 있다.

      gitlab-rails console production
  • 만약! Docker로 사용하고 있다면 docker container로 일단 들어가거서 실행

      docker exec -it gitlab bash 
      gitlab-rails console production
  • 또는! Docker로 사용하고 있더라도 바로 때려버릴 수도 있다.

      docker exec -it gitlab gitlab-rails console production
2. Find admin user
irb(main):001:0>  u = User.where(id:1).first
3. Set password
irb(main):002:0>  u.password = 'myAdminPassword' 
4. Set password again
irb(main):003:0>  u.password_confirmation = 'myAdminPassword' 
5. Save changes
irb(main):004:0>  u.save!
6. Exit
irb(main):005:0>  exit
7. Go to GitLab Login Page on Browser and Login with Admin (ID:root / PW:myAdminPassword)
  • 'root'라는 계정으로 로그인할 수 있다.
8. Admin Page

로그인을 하면 바로 관리자페이지가 짜잔!

Reference - 참고

GitLab 설치
Admin