[如何使用 Docker Compose 安裝 GitLab?](https://www.czerniga.it/2021/11/14/how-to-install-gitlab-using-docker-compose/)
你好。今天我將向你展示如何在一小時內安裝 GitLab 服務器並在其中運行你的第一個 CI/CD 進程。
本文是有關如何開始使用流行的 CI/CD 工具的系列文章的一部分。在本文中,我將向您展示如何安裝 CI/CD 工具以及如何准備構建和測試基於 Maven 的簡單項目的過程。
什么是 GitLab?
Gitlab 是一個使用持續集成和持續交付流程支持軟件開發的工具。它的主要組件是 Git 版本控制系統。此外,它還提供了許多功能,支持程序員在各種環境下持續構建、測試和自動安裝項目的工作。
什么是 Docker Compose?
要了解 Docker Compose 是什么,請參閱文章:如何使用 Docker Compose 安裝 Jenkins?
所需工具
在開始工作之前,准備好所需的工具。您可以在網站上找到這些工具的說明: 如何使用 Docker Compose 安裝 Jenkins?
Docker Compose 的配置
我們將通過創建一個專用目錄來開始安裝工作,我們將在其中存儲數據和 Gitlab 配置。
> mkdir gitlab
為方便起見,我們還將設置一個包含 Gitlab 目錄路徑的環境變量:
> export GITLAB_HOME=$(pwd)/gitlab
在下一步中,我們創建具有以下內容的 docker-compose.yml 文件:
# docker-compose.yml
version: '3.7' services: web: image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'localhost' container_name: gitlab-ce environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://localhost' ports: - '8080:80' - '8443:443' volumes: - '$GITLAB_HOME/config:/etc/gitlab' - '$GITLAB_HOME/logs:/var/log/gitlab' - '$GITLAB_HOME/data:/var/opt/gitlab' networks: - gitlab gitlab-runner: image: gitlab/gitlab-runner:alpine container_name: gitlab-runner restart: always depends_on: - web volumes: - /var/run/docker.sock:/var/run/docker.sock - '$GITLAB_HOME/gitlab-runner:/etc/gitlab-runner' networks: - gitlab networks: gitlab: name: gitlab-network
此配置定義了我們要運行的容器。在我們的例子中,它將是帶有一個 GitLab 運行器的 GitLab 服務(一個用於運行 CI / CD 任務的單獨模塊)。最重要的配置參數是:
- image – 我們想在我們的服務器中使用的 docker 鏡像
- 端口——我們在容器外提供的端口列表。在我們的配置中,我們提供端口 80、443(網站)
- container_name – 我們的容器的名稱
- volumes - 指定容器使用的卷。在我們的配置中,我們有與我們的系統共享的目錄($ GITLAB_HOME 中的子目錄)和一個允許從 GitLab 運行器訪問 Docker 環境的附加卷。
- 網絡——定義容器將在其中運行的虛擬網絡。在我們的例子中,www 門戶和運行器在一個“gitlab-network”中運行
Gitlab 安裝
使用以下命令啟動容器:
> docker-compose up -d
一旦啟動,Docker 將從服務器下載 GitLab 和 GitLab Runner 圖像。在我的電腦上看起來像這樣:
碼頭工人撰寫
首次登錄 GitLab 需要一個臨時密碼,該密碼在安裝過程中自動生成。我們使用以下命令獲取密碼:
> docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password
GitLab 啟動
我們的 GitLab 位於:http://localhost:8080。轉到此地址后,應出現以下屏幕:
注意:門戶首次啟動可能需要幾分鍾時間。
要登錄門戶,我們必須在用戶名字段中輸入“root”,並在密碼字段中輸入我們之前獲得的臨時密碼。
登錄后,應出現以下屏幕:
GitLab
恭喜,GitLab 已經成功上線!
門戶的初始配置
在我們繼續之前,值得更改一些門戶設置。首先,我們將關閉所有人的公開注冊。為此,請單擊上方欄中可用的 View Setting 按鈕並顯示警告(面板地址; http://localhost:8080/admin/application_settings/general#js-signup-setting s )。在新頁面上,取消選中啟用注冊並保存更改。
下一步應該是更改 root 用戶。為此,請訪問網站: http://localhost:8080/-/profile/account並在更改用戶名字段中輸入名稱。我們通過單擊更新用戶名來批准。
我們要做的最后一個更改是更改密碼。為此,請轉到頁面:ost:8080/-/profile/password/edit並輸入臨時密碼和新密碼。我們通過單擊Save password批准更改。
GitLab 運行器配置
要在 GitLab 中使用 GitLab 運行器,您需要對其進行配置。為了正確配置,我們需要從門戶復制的令牌。為此,請轉到地址:http://localhost:8080/admin/runners並單擊復制令牌按鈕。
在下一步中,它會轉到控制台並運行以下命令:
> docker exec -it gitlab-runner gitlab-runner register --url "http://gitlab-ce" --clone-url "http://gitlab-ce"
啟動后,會出現一個配置模塊。該模塊提供以下信息:
- 輸入 GitLab 實例 URL:確認輸入的值(點擊回車)
- 輸入注冊令牌:輸入之前復制的令牌。
- 輸入跑步者的描述:輸入跑步者的名字,例如 docker-runner
- 輸入跑步者的標簽:此處留空
- 輸入執行者:在此處輸入 docker
- 輸入默認的 Docker 鏡像:這里我們提供默認的 docker 鏡像,例如 maven: latest
正確配置后,我們應該看到確認Runner 注冊成功:
除了基本配置外,我們還需要允許從 runner 啟動的容器訪問 GitLab 運行所在的虛擬網絡。為此,我們運行編輯器(例如 vi)
> sudo vi gitlab/gitlab-runner/config.toml
然后我們在運行器配置的末尾添加新行:network_mode = “gitlab-network”
要檢查 runner 是否在 GitLab 級別可用,請轉到以下地址:http://localhost:8080/admin/runners
我們創建了我們的第一個存儲庫
設置好運行器后,我們可以創建我們的第一個存儲庫。為此,請轉到頁面: http://localhost:8080/projects/new並單擊Import project。
Naastępnym ekranie wybieramy導入項目來自:來自 URL 的回購。Następnie podajemy w Git 存儲庫 URL地址:https ://github.com/czerniga/helloworld.git 。Na końcu zatwierdzamy klikając創建項目。
在下一個屏幕上,選擇Import project from: Repo from URL。然后我們提供 Git 存儲庫 URL 地址:https ://github.com/czerniga/helloworld.git 。最后,單擊 Create project 進行確認。
一段時間后,您應該將第一個存儲庫復制到您的 GitLab。
我們創建 CI/CD 管道
要為項目創建 CI/CD 管道,請單擊左側的主菜單CI/CD,然后單擊Editor。屏幕上將出現一個創建 .gitlab-ci.yml 文件的選項,該文件將包含我們的管道定義。該文件將在 Git 存儲庫中創建。
在新屏幕上,我們可以看到我們的管道編輯器。在編輯器中,粘貼以下內容:
image: maven:latest stages: - build - test build-job: stage: build script: - echo "Compiling the code..." - mvn clean package - echo "Compile complete." artifacts: paths: - target test-job: stage: test dependencies: - build-job script: - ls -al - echo "Running tests" - java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld
上面的定義描述了 CI/CD 過程應該如何工作。最重要的元素是:
- image:我們將用於構建項目的 docker 映像
- 階段:我們的流程步驟列表
- build-job:我們構建項目過程中的第一步。此外,我們保存工件以供下一步使用
- test-job : 運行我們項目的第二步
粘貼我們的文件后,單擊Commit changes 確認更改。
一旦獲得批准,GitLab 將啟動該過程。要檢查其結果,請轉到左側菜單中的CI/CD ->管道。在屏幕上,我們應該看到我們的第一個任務已經開始。
我們可以通過單擊待定按鈕或內部版本號#1來查看此任務的詳細信息
一段時間后,應該構建和測試任務。
如何使用 Docker Compose 安裝 GitLab
恭喜,您剛剛在 GitLab 中創建了您的第一個 CI/CD 作業!
停止容器
包含我們服務的容器是使用導致后台工作的開關啟動的。如果要停止門戶,請執行以下命令:
docker-compose down
概括
在本教程中,我展示了如何使用一個 GitLab 運行器運行 GitLab。此處給出的配置導致所有網站數據都保存在您的計算機/服務器上的目錄中。因此,當容器停止或移除時,數據不會被刪除。