Docker搭建GitLab

原文鏈接:https://segmentfault.com/a/1190000019019854

轉載二篇文章

  • Docker搭建GitLab:https://segmentfault.com/a/1190000019019854
  • Centos搭建GitLab:https://segmentfault.com/a/1190000019019787
一、安裝

一般會將 GitLab 的配置 (etc) 、 日誌 (log) 、數據 (data) 放到容器之外, 便於日後升級

docker pull gitlab/gitlab-ce:11.6.4-ce.0

# 通過docker run中加入環境變量,取名爲gitlab
docker run --detach \       # 後臺運行 -d
    # --hostname song.local \ # 指定容器域名,未知功能:創建鏡像倉庫的時候使用到
    -p 8443:443 \           # 將容器內443端口映射到主機8443,提供https服務
    -p 80:80 \              # 將容器內80端口映射到主機8080,提供http服務
    -p 10022:22 \           # 將容器內22端口映射到主機1002,提供ssh服務
    --name gitlab \         # 指定容器名稱
    --restart=unless-stopped \                   # 容器運行中退出時(不是手動退出),自動重啓
    --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \       # 將本地/var/lib/docker/volumes/gitlab-data/etc掛載到容器內/etc/gitlab
    --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \   # 將本地將本地/var/lib/docker/volumes/gitlab-data/log掛載到容器內/var/log/gitlab
    --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \  # 將本地將本地/var/lib/docker/volumes/gitlab-data/data掛載到容器內/var/opt/gitlab
    gitlab/gitlab-ce:11.6.4-ce.0                 # 鏡像名稱:版本

爲了方便日後啓動,創建一個啓動腳本:gitlab-docker-restart.sh,代碼如下:

#!/bin/bash

serverName="gitlab"
imageName="gitlab/gitlab-ce:11.6.4-ce.0"

function runServer(){
    docker run --detach \
        -p 8443:443 \
        -p 80:80 \
        -p 10022:22 \
        --name ${serverName} \
        --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \
        --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \
        --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \
        -v /etc/localtime:/etc/localtime \
        --restart=unless-stopped \
        ${imageName}
}

runningCount=`docker ps -f status=running -f status=restarting | grep -w ${serverName} |wc -l`;
if [[ ${runningCount} > 0 ]];then
    echo "docker restart 重啓項目:${serverName}"
    docker restart ${serverName}
    exit 0
fi

serverCount=`docker ps -f status=exited -f status=created | grep -w ${serverName} |wc -l`;
# 判斷是否已經啓動過,且端口爲默認端口
if [[ ${serverCount} > 0 ]];then
    if [[ ${serverCount} > 1 ]]; then
        echo "Error : 查找到多個 ${serverName} 容器,請手動啓動"
        exit 1
    else
        echo "docker start 啓動項目:${serverName}"
        docker start ${serverName}
    fi
else
    name=${imageName%%:*}
    tag=${imageName##*:}
    # 判斷是否有該鏡像
    imageCount=`docker images | grep -w ${name} | wc -l`;

    if [[ ${imageCount} > 0 ]];then
        echo "docker run 第一次啓動項目: ${imageName}"
        runServer
    else
        echo "Error : 還沒有該鏡像"
        exit 1
    fi
fi

將 gitlab-docker-restart.sh賦予執行權限:chmod +x gitlab-docker-restart.sh
之後直接執行 gitlab-docker-restart.sh 即可完成gitlab的重啓

二、配置
# 修改gitlab.rb配置文件
$ vim /var/lib/docker/volumes/gitlab-data/etc/gitlab.rb # 編輯gitlab.rb文件


## GitLab NGINX
nginx['listen_port'] = 80  # gitlab nginx 端口。默認端口爲:80 

## GitLab Unicorn
unicorn['listen'] = 'localhost'
unicorn['port'] = 8080 #默認是8080端口

## GitLab URL 配置http協議所使用的訪問地址
external_url 'http://song.local' # clone時顯示的地址,gitlab 的域名

# 配置ssh協議所使用的訪問地址和端口
gitlab_rails['gitlab_ssh_host'] = 'song.local'
gitlab_rails['gitlab_shell_ssh_port'] = 10022

退出容器後,重啓容器:docker restart gitlab

假如你將gitlab配置文件已經掛載到外部存儲路徑下,只要在相應目錄(如這裏的/srv/gitlab/config)下修改gitlab.rb文件,並重啓容器就可。

將容器時間和host在一個時區-v /etc/localtime:/etc/localtime

三、訪問

訪問 http://127.0.0.1:80,系統默認的管理員賬號爲 root,第一次訪問 GitLab,會要求初始化管理員賬號的密碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章