使用 docker 迅速搭建gitlab

jopen 8年前發布 | 18K 次閱讀 GitLab Docker Git 版本控制系統

本文博客鏈接

Introduction

  • GITLAB版本
    7.10.4
  • 說明
    1. gitlab在服務器的搭建不是非要使用docker的方式, 但使用開源的docker鏡像是方便的,本文只介紹這種方式。
    2. 本文完全使用了 docker-gitlab 的搭建方案,但為使文章更有意義,對官方的搭建方案進行了配置上的篩選和流程上的精簡。
    3. 具體區別官方文檔包括:
      • 省略了基本的硬件設備配置需求, 這些都可以在官方文檔中查看到。
      • 省略了 Quick Start, 因為 Quick Start 對實際的平臺搭建可能只是練手,不需要再重復說一遍了。
      • 挑選了主要的配置進行講解, 官方詳細的配置項在實際使用中并不是都需要的,并且也可以在其文檔中查看到。
      • 對于 redis 和 mysql, 這里使用了 link container的方式, 本文僅提及此一種方式。
  • 參考資料
    1. docker-gitlab
    2. 17173

Installtion

  • 我們使用 docker 的方式搭建 gitlab , 所以首先需要 安裝 docker
    sudo apt-get purge docker.io
    curl -s https://get.docker.io/ubuntu/ | sudo sh
    sudo apt-get update
    sudo apt-get install lxc-docker
  • 使用 docker 依次下載鏡像,包括 gitlab``mysql``redis , 三個鏡像將用作啟動三個 docker container 。
    docker pull sameersbn/gitlab:7.10.4
    docker pull sameersbn/mysql:latest
    docker pull sameersbn/redis:lates

Start

  • 官方提供了 Quick Start 的參考。
  • start.sh
    echo "Starting Redis..." # 啟動 redis container
    docker run \
    --name=gitlab_redis \
    -tid \
    sameersbn/redis:latest
    echo "Starting MySQL..." # 啟動 mysql container
    mkdir -p /my/gitlab/mysql
    docker run \
    --name=gitlab_mysql \
    -tid \
    -e 'DB_NAME=gitlabhq_production' \
    -e 'DB_USER=gitlab' \
    -e 'DB_PASS=password' \
    -v /mygitlab/mysql:/var/lib/mysql \ # 掛載服務器mysql目錄
    sameersbn/mysql:latest
    echo "Starting gitlab..." # 啟動 gitlab container
    mkdir -p /my/gitlab/data
    mkdir -p /my/gitlab/log
    docker run \
    --name='gitlab' \
    -itd \
    --link gitlab_mysql:mysql \ # link 啟動的 mysql
    --link gitlab_redis:redisio \ # link 啟動的 redis
    --env-file my_gitlab.conf \ # gitlab的配置文件
    --publish=8000:80 \ # 服務器端口:docker內端口
    --publish=2000:22 \ # 服務器端口:docker內端口
    -v /var/run/docker.sock:/run/docker.sock \
    -v $(which docker):/bin/docker \
    -v /my/gitlab/data:/home/git/data \ # 掛載服務器文件data目錄
    -v /my/gitlab/log:/var/log/gitlab \ # 掛載服務器文件log目錄
    sameersbn/gitlab:7.10.4
  • 以上腳本用來啟動 gitlab, 下面依次解釋帶有注釋的重要行。
    • 首先啟動 redis 和 mysql 的 container, 使用的是之前下載好的鏡像。
    • 在啟動 mysql container 的時候新建了 /my/gitlab/mysql 目錄,用來掛載docker內部的 /var/lib/mysql 目錄。
    • 啟動 gitlab container, 使用 link 方式,link 到剛才創建的 redis 和 mysql。
    • publish 項用來做端口映射,8000:80 是服務器 gitlab host 端口和 gitlab docker 內端口的映射, 外部 web 80端口的請求可以通過 nginx 轉發到 8000 端口,將映射到 docker 內部的 80 端口。2000:22,對應用來命令行操作。
    • 掛載了兩個新建目錄 /my/gitlab/data /my/gitlab/log , 這樣在 host 主機上就可以找到這些內容。
    • --env-file my_gitlab.conf 此處選項是通過 my_gitlab.conf 文件來作為配置文件啟動, 下面介紹幾個常用配置組。
  • my_gitlab.conf 文件中的常用配置組。包括:
    1. GITLAB HOST 配置 設置訪問主頁地址,以及 root 用戶的初始密碼
      GITLAB_HOST=example.gitlab.com
      GITLAB_TIMEZONE=UTC
      GITLAB_ROOT_PASSWORD=password
    2. EMAIL 配置 gitlab 平臺的email設置
      GITLAB_EMAIL: The email address for the GitLab server. Defaults to example@example.com .
      GITLAB_EMAIL_DISPLAY_NAME: The name displayed in emails sent out by the GitLab mailer. Defaults to GitLab .
      GITLAB_EMAIL_REPLY_TO: The reply to address of emails sent out by GitLab. Defaults to the noreply@example.com .
      GITLAB_EMAIL_ENABLED: Enable or disable gitlab mailer. Defaults to the SMTP_ENABLED configuration.
    3. SMTP 配置 gitlab需要email配置來做通知工作。
      SMTP_ENABLED: Enable mail delivery via SMTP. Defaults to true if SMTP_USER is defined, else defaults to false .
      SMTP_DOMAIN: SMTP domain. Defaults to www.gmail.com
      SMTP_HOST: SMTP server host. Defaults to smtp.gmail.com .
      SMTP_PORT: SMTP server port. Defaults to 587 .
      SMTP_USER: SMTP username.
      SMTP_PASS: SMTP password.
      SMTP_STARTTLS: Enable STARTTLS. Defaults to true .
      SMTP_OPENSSL_VERIFY_MODE: SMTP openssl verification mode. Accepted values are none , peer , client_once and fail_if_no_peer_cert . Defaults to none .
      SMTP_AUTHENTICATION: Specify the SMTP authentication method. Defaults to login if SMTP_USER is set.
    4. Backups 配置 自動備份
      GITLAB_BACKUP_DIR: The backup folder in the container. Defaults to /home/git/data/backups
      GITLAB_BACKUPS: Setup cron job to automatic backups. Possible values disable , daily , weekly or monthly . Disabled by default
      GITLAB_BACKUP_EXPIRY: Configure how long (in seconds) to keep backups before they are deleted. By default when automated backups are disabled backups are kept forever (0 seconds), else the backups expire in 7 days (604800 seconds).
      GITLAB_BACKUP_TIME: Set a time for the automatic backups in HH:MM format. Defaults to 04:00 .
  • nginx 配置
    1. 監聽 80 端口轉發服務器 8000 端口。

Maintenance

  • 基本信息
    • gitlab host地址 my_gitlab.conf 中的 GITLAB_HOST 配置項。
    • root 用戶初始密碼 my_gitlab.conf 中的 GITLAB_ROOT_PASSWORD 配置項。
  • 狀態
    • 所有 data 和 log 掛載到 /my/gitlab/ 文件夾下。
    • mysql 目錄掛載到 /my/gitlab/mysql 。
    • 查看 container 配置信息: docker inspect gitlab 。
  • 備份(引用修改自 17173 )
    1. 備份:

      docker run \

      --name='gitlab_backup' \

      -it \

      --rm \

      --link gitlab_mysql:mysql \

      --link gitlab_redis:redisio \

      -v /var/run/docker.sock:/run/docker.sock \

      -v $(which docker):/bin/docker \

      -v /my/gitlab/data:/home/git/data \

      -v /my/gitlab/log:/var/log/gitlab \

      sameersbn/gitlab:7.10.4 app:rake gitlab:backup:create

    • 過程能在屏幕上看到,備份會自動打成tar包放入/my/gitlab/data/backups里。可以自行對該tar包做壓縮,例如gzip 時間戳_gitlab_backup.tar。
    1. 恢復:

      docker run \

      --name='gitlab_restore' \

      -it \

      --rm \

      --link gitlab_mysql:mysql \

      --link gitlab_redis:redisio \

      -v /var/run/docker.sock:/run/docker.sock \

      -v $(which docker):/bin/docker \

      -v /my/gitlab/data:/home/git/data \

      -v /my/gitlab/log:/var/log/gitlab \

      sameersbn/gitlab:7.10.4 app:rake gitlab:backup:restore

      • 屏幕上會將/my/gitlab/data/backups中的所有文件和目錄列出來,復制粘貼要恢復的tar包文件名,敲入回車即開始恢復。
      • 注意:恢復時會將當前數據庫中的所有表先刪掉再導入備份tar包的里sql文件,因此此步要小心。

來自: http://dockone.io/article/933

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!