轉載二篇文章
- 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,會要求初始化管理員賬號的密碼。