透過Docker Compose部署GitLab和GitLab Runner(一)

景少發表於2024-05-10

GitLab 是一個用於版本控制、專案管理和持續整合的開源軟體平臺,它提供了一整套工具,能夠幫助團隊高效地協作開發。而 GitLab Runner 則是 GitLab CI/CD 的執行者,用於執行持續整合和持續交付任務。

在本文中,我們將使用 Docker Compose 來快速部署 GitLab 和 GitLab Runner。Docker Compose 是一個用於定義和執行多容器 Docker 應用程式的工具,它透過一個 YAML 檔案來配置服務的執行方式。

編寫 Docker Compose 檔案

首先,我們需要建立一個名為 docker-compose.yml 的檔案,並將以下內容新增到檔案中:

version: '3.8'

services:

  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        # 對外訪問gitlab地址,可以使用本機IP
        external_url 'http://192.168.184.200:9080'
        gitlab_rails['gitlab_shell_ssh_port'] = 9022
    ports:
      - '9080:9080' # 注意宿主機和容器內部的埠要一致,否則external_url無法訪問
      - '9443:443'
      - '9022:22'
    volumes:
      - '/opt/store/gitlab/config:/etc/gitlab'
      - '/opt/store/gitlab/logs:/var/log/gitlab'
      - '/opt/store/gitlab/data:/var/opt/gitlab'
    shm_size: '1g'

  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    container_name: "gitlab-runner"
    restart: always
    volumes:
      - '/opt/store/gitlab-runner:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock' #這個掛載是將宿主機上的docker socket掛載到了容器內,這樣容器內執行的docker命令會被宿主機docker daemon最終執行

在這個 Docker Compose 檔案中,我們定義了兩個服務:GitLab 和 GitLab Runner。GitLab 服務使用 gitlab/gitlab-ce:latest 映象,而 GitLab Runner 使用 gitlab/gitlab-runner:latest 映象。我們設定了各種環境變數、埠對映和卷掛載,以確保 GitLab 和 GitLab Runner 正常執行,並且能夠持久化資料。

啟動服務

完成 Docker Compose 檔案的編寫後,我們可以使用以下命令來啟動服務:

docker-compose up -d

這將會啟動 GitLab 和 GitLab Runner 服務,並且以後臺模式執行。你可以使用 docker ps 命令來驗證服務是否已經成功啟動。

訪問 GitLab

一旦服務啟動成功,就可以透過瀏覽器訪問 GitLab。在本例中,我們將 GitLab 設定為在 http://192.168.184.200:9080 地址上執行。只需在瀏覽器中輸入該地址,即可訪問 GitLab 介面。

第一次登入時,預設使用者名稱是root,其初始密碼需要透過以下方式獲取:

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

圖片

登入成功之後,需要更改初始密碼,畢竟那一串初始密碼根本記不住(_)

圖片

總結

透過Docker Compose的方式部署GitLab非常方便快捷,下一篇將介紹GitLab自帶的CI/CD功能如何使用。

相關文章