使用 Docker 自架 GitLab

在本文中,我們將介紹如何使用 Docker 構建和運行自己的 GitLab 實例。GitLab 是一個開源的 DevOps 平台,提供了代碼管理、CI/CD、項目管理等功能。通過使用 Docker,我們可以快速輕鬆地部署 GitLab,並且可以輕鬆地對其進行擴展和定製。

步驟一:安裝 Docker 和 Docker Compose

首先,確保您的系統上安裝了 Docker 和 Docker Compose。您可以按照官方文檔的指引進行安裝:

步驟二:創建 Docker Compose 文件

在您的項目目錄中創建一個名為 docker-compose.yml 的文件,並將以下內容添加到該文件中:

version: '3'

services:
  gitlab:
    image: gitlab/gitlab-ce:15.8.0-ce.0
    container_name: gitlab
    restart: always
    privileged: true
    hostname: '172.20.160.120'
    ports:
      - '10777:80'
      - '10443:443'
      - '10022:22'
    volumes:
      - './gitlab/data:/var/opt/gitlab'
      - './gitlab/logs:/var/log/gitlab'
      - './gitlab/config:/etc/gitlab'
    networks:
      - local_net

networks:
  local_net:
    name: local-net
    driver: bridge

在這個 Docker Compose 文件中,我們定義了一個名為 gitlab 的服務,使用了 gitlab/gitlab-ce 映像。我們將 GitLab 的配置文件、日志文件和數據存儲到主機上的相應目錄中。這邊我使用的版本是15.8.0-ce.0 後續在測試時也都是使用這個版本的結果,所以如果讀者想要使用別的版本,遇到問題還是先以官方文件內容為主。

步驟三:啟動 GitLab 服務

在項目目錄中運行以下命令來啟動 GitLab 服務:

docker-compose up -d

這將在後台啟動 GitLab 服務。首次運行此命令時,Docker 將從 Docker Hub 下載 GitLab 映像,這可能需要一些時間。

步驟四:訪問 GitLab

一旦 GitLab 服務啟動完成,您就可以通過瀏覽器訪問 GitLab。默認情況下,GitLab 將在 http://localhost 上運行。首次訪問 GitLab 時,您需要設置 root 用戶的密碼。

完成這些步驟後,您就可以開始使用自己的 GitLab 服務了!您可以註冊其他用戶、創建項目、推送代碼等。

自定義和擴展

通過 Docker Compose 文件,您可以輕鬆地對 GitLab 進行自定義和擴展。例如,您可以配置反向代理、添加額外的插件或定製 GitLab 的配置。

Gitlab 設定參數(gitlab.rb)

Path: /etc/gitlab/

主要是修改 clone url 問題,這邊有一些隱藏邏輯。

  • external_url 如果有帶 port 則會用這個 port 去監聽,但因為我是要在 Docker container 自己,所以這邊使用要特別注意搭配 Nginx 的 listen port 設定調整回去。

  • nginx['listen_port'] = 80

自架Server重設管理員密碼

首先就先連進 GitLab container 根據以下內容執行重設管理員密碼

root@localhost:/etc/init.d# cd ..
root@localhost:/etc# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby:         ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [x86_64-linux]
GitLab:       15.8.0 (c052f86b6b4) FOSS
GitLab Shell: 14.15.0
PostgreSQL:   13.8
------------------------------------------------------------[ booted in 15.88s ]
Loading production environment (Rails 6.1.6.1)
irb(main):001:0> user = User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0> user.password = '1qaz2wsx'
=> "1qaz2wsx"
irb(main):003:0> user.password_confirmation = '1qaz2wsx'
=> "1qaz2wsx"
irb(main):004:0> user.save
=> false
irb(main):005:0> user.password = 'Caster123456'
=> "Caster123456"
irb(main):006:0> user.password_confirmation = 'Caster123456'
=> "Caster123456"
irb(main):007:0> user.save
=> true
irb(main):008:0>

成功重設使用者密碼,會再 user.save 回傳 true,這時就可以再開啟 http://localhost:10777 登入

結論

通過使用 Docker,我們可以快速輕鬆地構建和運行自己的 GitLab 實例。這使得 GitLab 的部署和管理變得非常簡單,同時也提供了豐富的自定義和擴展功能。現在您可以開始在自己的項目中使用 GitLab 了!

希望本文能夠對您有所幫助。祝您使用 GitLab 愉快!

Last updated