最近在學習自動化部署的一些內容,自動化部署,涉及到的內容有Docker、Jenkins、Gitlab等內容,今天通過docker玩了一遍gitlab,下面是一些心得
安裝Gitlab
Docker安裝服務實在是太方便,我們通過docker來安裝Gitlab,運行如下命令查看Gitlab的鏡像文件
搜索鏡像
sudo docker search gitlab
看到鏡像有很多,如果OFFICIAL這一項下面是[OK] 表示爲官方的鏡像,我這裏使用第四個,因爲這是中文版的,鄙人英語不好,還是看中文版的比較舒服。
其實,中文版也就是安裝了一個語言包而已,有興趣可以自己安裝第一個,然後再手動配置中文包
下載鏡像
sudo docker pull twang2218/gitlab-ce-zh
啓動服務
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
查看啓動情況
// 添加-a 參數,把啓動的,沒有啓動的都列出來
sudo docker ps
配置Gitlab
配置的時候,我們需要進入容器當中配置,如果直接修改我們映射到容器外部的配置文件,總會出現一些奇怪的問題,爲了避免出現問題,儘量按照如下操作流程進行相關的配置和測試
第一步:進入容器
sudo docker exec -it gitlab bash
第二步:修改gitlab.rb文件
sudo cd /etc/gitlab
sudo vim gitlab.rb
第三步:修改IP和端口
該部分內容的修改是爲了解決,我們再gitlab創建項目的時候,項目訪問地址是容器id的問題
// 可以使用/ 來查找關鍵字,找到指定的內容,然後通過n來下一個查找
// 在gitlab創建項目時候http地址的host(不用添加端口)
external_url 'http://xx.xx.xx.xx'
// 在gitlab創建項目時候ssh地址的host
gitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'(不用添加端口)
# docker run 的時候我們把22端口映射爲外部的8022了,這裏修改下
gitlab_rails['gitlab_shell_ssh_port'] = 8022
第四步:修改郵箱
在gitlab.rb文件的最後添加如下代碼
# 是否啓用
gitlab_rails['smtp_enable'] = true
# SMTP服務的地址
gitlab_rails['smtp_address'] = "smtp.qq.com"
# 端口
gitlab_rails['smtp_port'] = 465
# 你的QQ郵箱(發送賬號)
gitlab_rails['smtp_user_name'] = "[email protected]"
# 授權碼
gitlab_rails['smtp_password'] = "********"
# 域名
gitlab_rails['smtp_domain'] = "smtp.qq.com"
# 登錄驗證
gitlab_rails['smtp_authentication'] = "login"
# 使用了465端口,就需要配置下面三項
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
# 你的QQ郵箱(發送賬號)
gitlab_rails['gitlab_email_from'] = '[email protected]'
第五步:應用配置
sudo gitlab-ctl reconfigure
第六步:重啓服務
sudo gitlab-ctl restart
第七步:驗證郵箱服務
// 在容器中進入命令行
sudo gitlab-rails console
// 測試郵件發送
sudo Notify.test_email("[email protected]","title","gitlab").deliver_now
// 退出命令行
sudo exit
// 退出容器
sudo exit
常用命令
啓動
// 第一次啓動
// 這部分命令不能直接copy,格式化只是爲了方便看
docker run -d
-p 8443:443
-p 8090:80
-p 8022:22
--restart always
--name gitlab
-v /usr/local/gitlab/etc:/etc/gitlab
-v /usr/local/gitlab/log:/var/log/gitlab
-v /usr/local/gitlab/data:/var/opt/gitlab
--privileged=true
twang2218/gitlab-ce-zh
// 如果停止了,用start啓動
docker start <ID || Name>
- -d在後臺啓動
- -p 8443:443 把容器中應用的端口443映射爲外部的8443端口
- -p 8090:80 把容器中應用的端口80映射爲外部的8090端口
- -p 8443:443 把容器中應用的端口443映射爲外部的8443端口
- --restart 重啓配置
- --name 容器啓動之後的名字
- -v 把容器中的配置,日誌,數據映射到容器外部
通過--name配置了gitlab的名字之後,我們後續可以通過這個name對容器進行相關的啓動和停止操作
容器外停止
sudo docker stop gitlab
// 這裏的gitlab 就是我們上一步docker run 當中使用--name 配置的名字
容器外重啓
sudo docker restart gitlab
進入容器命令行
sudo docker exec -it gitlab bash
容器中應用配置
sudo gitlab-ctl reconfigure
容器中重啓服務
sudo gitlab-ctl restart
服務地址
以下是我的gitlab服務地址,僅供測試使用,後面可能會刪除,大家不要使用哈
http://118.31.225.185:8090
注意事項
如果您使用的是阿里雲服務器,需要在安全組裏面把你想要對外開放的端口打開,否則是無法訪問的