Skip to main content

Gitlab Server

Installation

With Docker
mkdir /mygitlab

docker run --detach \
  --hostname  mygit.example.com\
  --publish 80:80 \
  --name gitlab \
  --restart always \
  --volume /mygitlab/config:/etc/gitlab \
  --volume /mygitlab/logs:/var/log/gitlab \
  --volume /mygitlab/data:/var/opt/gitlab \
  --privileged \
  gitlab/gitlab-ce:17.11.7-ce.0

Config

Custom port

1- docker command

    使用非標準埠時,host 與 container 必須使用相同埠號。
    docker run --detach \
      --hostname 10.4.1.76 \
      --publish 6080:6080 \
      --name gitlab \
      --volume /myapp/gitlab/config:/etc/gitlab \
      --volume /myapp/gitlab/logs:/var/log/gitlab \
      --volume /myapp/gitlab/data:/var/opt/gitlab \
    ...

    2- Edit gitlab.rb 

      變更 port 會影響 container 的通訊埠,而不是外部 host。 
      nginx['listen_port'] = 6080
      external_url 'http://10.4.1.76:6080'

       

      Backup & Restore

      With Docker

      • 備份檔 (編號_日期_版本_gitlab_backup.tar) 要先複製到 container 的目錄 /var/opt/gitlab/backups (預設)
      # Backup
      docker exec -it <container-name> gitlab-backup create
      # Backup DB only
      docker exec -it <container-name> gitlab-backup create SKIP=artifacts,repositories,registry,uploads,builds,pages,lfs,packages,terraform_state
      
      # Verify the backup file
      docker exec -it <container-name> ls  /var/opt/gitlab/backups
      
      # Restore
      docker exec -it <container-name> bash
      > gitlab-ctl stop puma
      > gitlab-ctl stop sidekiq
      > gitlab-ctl status
      
      > gitlab-backup restore BACKUP=1704810663_2024_01_09_17.11.1
      # Restore DB only
      > gitlab-backup restore BACKUP=1704810663_2024_01_09_17.11.1 SKIP=artifacts,repositories,registry,uploads,builds,pages,lfs,packages,terraform_state
      
      > gitlab-ctl restart
      > gitlab-rake gitlab:check SANITIZE=true
      > gitlab-rake gitlab:artifacts:check
      > gitlab-rake gitlab:lfs:check
      > gitlab-rake gitlab:uploads:check
      
      # Restart the container
      docker restart <container-name>

      Upgrade & Patch

      Pre-upgrade and post-upgrade checks

      1- Check the general configuration:

      # With Docker
      docker exec -it <container-name> gitlab-rake gitlab:check | tee mylogs/check.250916.out

      2- Confirm that encrypted database values can be decrypted:

      # With Docker
      docker exec -it <container-name> gitlab-rake gitlab:doctor:secrets | tee mylogs/doctor_secrets.250916.out

      3- Check the status of all background database migrations.

      gitlab-psql -c "SELECT job_class_name, table_name, column_name, job_arguments FROM batched_background_migrations WHERE status NOT IN(3, 6);"
      
      # With Docker
      docker exec -it <container-name> gitlab-psql -c "SELECT job_class_name, table_name, column_name, job_arguments FROM batched_background_migrations WHERE status NOT IN(3, 6);"

      4- In GitLab UI, check that:

      • Users can sign in.
      • The project list is visible.
      • Project issues and merge requests are accessible.
      • Users can clone repositories from GitLab.
      • Users can push commits to GitLab.