摘要:服務的依賴實現解耦,有多個服務依賴同一個,其中一個需要重啟,而導致其他服務中斷最重要的原因我想試試閑話少說了。。。拉取鏡像注意如果沒有指定對應的版本,默認會拉取版本經過漫長的等待。。。也可能會出現莫名其妙的問題。。。
docker搭建gitlab 構想:
通過 docker 容器技術,在centos7系統下,使用docker鏡像,安裝gitlab,并將gitlab的http,https,ssh端口映射到其他端口;在宿主機中裝入nginx,通過nginx反向代理技術訪問宿主機中的容器;至于為什么要這樣折騰嘛。。。(個人看法)
不同的服務依賴的環境各有差異
當服務需要遷移的時候,很多環境需要重新搭建其實也是挺崩潰的,通過容器技術可以更快的實現遷移
不同的服務對宿主機的性能是有損耗的,通過容器可以更好的控制和監管(不會出現一個服務跑掛了一臺機器。。。)
服務的依賴實現解耦,(eg:有多個服務依賴同一個nginx,其中一個需要重啟nginx,而導致其他服務中斷)
最重要的原因(我想試試....~O(∩_∩)O~)
閑話少說了。。。開始擼。。。(docker的安裝基本操作就不在這里多說了)有需要的小伙伴可以看下:
docker簡單入門
docker入門到實踐
1.拉取gitlab鏡像 1.1.官網找到需要的鏡像Docker Hub
在官網我們可以找到各種各樣我們需要的鏡像,通過搜索可以找到gitlab鏡像。
1.2.拉取gitlab鏡像docker pull gitlab/gitlab-ce
注意:如果沒有指定對應的版本,默認會拉取 latest版本
經過漫長的等待。。。
通過docker images 命令看到gitlab鏡像證明你已經pull完了
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE gitlab/gitlab-ce latest 5d8ab6b06918 4 days ago 1.43GB2.run容器
運行:
docker run --detach --hostname gitlab.xxx.com --publish 444:443 --publish 81:80 --publish 23:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab 5d8ab6b06918
--hostname :指定容器中綁定的域名,會在創建鏡像倉庫的時候使用到,這里綁定gitlab.xxx.com
--publish:端口映射;容器內的443,80,22端口分別映射到宿主機的444,81,23端口
--volume :掛載數據卷,映射到容器中去的容器外部存儲空間
5d8ab6b06918 :鏡像的ID
數據存儲地方
當地的位置 | 容器的位置 | 作用 |
---|---|---|
/srv/gitlab/config | /etc/gitlab | 用于存儲GitLab配置文件 |
/srv/gitlab/logs | /var/log/gitlab | 用于存儲日志 |
/srv/gitlab/data | /var/opt/gitlab | 用于存儲應用數據 |
通過docker ps 命令看到gitlab容器證明你已經運行成功了
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e12ae220c14 5d8ab6b06918 "/assets/wrapper" 13 minutes ago Up 13 minutes (healthy) 0.0.0.0:23->22/tcp, 0.0.0.0:81->80/tcp, 0.0.0.0:444->443/tcp gitlab3.配置GitLab
上面的容器使用的是官方Omnibus GitLab軟件包,所有的配置都在唯一的配置文件 /etc/gitlab/gitlab.rb
當然我們也可以進入容器內部通過shell會話進行相關操作
docker exec -it gitlab /bin/bash3.1 SMTP Setting
GitLab的使用過程中涉及到大量的郵件,而郵件服務你可以選擇使用Postfix,sendmai,配置SMTP服務其中一種;
Postfix還要安裝其他東西,sendmai又是比較老,相對較下SMTP配置起來會比較方便,我使用的就是SMTP;
gitlab_rails["smtp_enable"] = true gitlab_rails["smtp_address"] = "smtp.163.com" gitlab_rails["smtp_port"] = 25 gitlab_rails["smtp_user_name"] = "XXX@163.com" gitlab_rails["smtp_password"] = "password" gitlab_rails["smtp_domain"] = "163.com" gitlab_rails["smtp_authentication"] = :login gitlab_rails["smtp_enable_starttls_auto"] = true gitlab_rails["gitlab_email_from"] = "XXX@163.com" user["git_user_email"] = "XXX@163.com"
說明:
gitlab_rails["smtp_address"] :SMTP服務地址,不同的服務商不同
gitlab_rails["smtp_port"] :服務端口
gitlab_rails["smtp_user_name"] :用戶名,自己注冊的
gitlab_rails["smtp_password"] :客戶端授權秘鑰(獲取方式,下圖講解)
gitlab_rails["gitlab_email_from"] :發出郵件的用戶,注意跟用戶名保持一致
user["git_user_email"] :發出用戶,注意跟用戶名保持一致
獲取郵箱客戶端秘鑰:
gitlab-ctl reconfigure
gitlab-rails console Notify.test_email("543314032@qq.com", "Message Subject", "Message Body").deliver_now
應該會成功。。。
注意:
其實你在宿主機的 /srv/gitlab/config 目錄的下也能找到gitlab.rb,修改這個文件也可以;但是修改完成后,必須重啟容器
docker restart gitlab
只要容器重啟Gitlab就會自動重新加載配置;
網上還有很多教程修改的 gitlab的其他配置文件實現SMTP的配置,我不太建議,因為文檔上面要求是在gitlab.rb上修改相關的配置的;其他文件修改,如果不是很熟悉可能會混亂。。。也可能會出現莫名其妙的問題。。。
如果你選擇的是其他服務商的smtp,具體配置可以看文檔
SMTP settings
更多的配置可以參考官方文檔:
Omnibus GitLab
來到這里其實你已經可以通過訪問81端口來訪問我們的gitlab了
4.Nginx反向代理我的nginx是通過rpm安裝的;具體的安裝這里就不多說了!
打開nginx的配置文件
upstream git{ # 域名對應 gitlab配置中的 external_url # 端口對應 gitlab 配置中的 nginx["listen_port"] server 域名:端口; } server{ listen 80; # 此域名是提供給最終用戶的訪問地址 server_name 域名; location / { # 這個大小的設置非常重要,如果 git 版本庫里面有大文件,設置的太小,文件push 會失敗,根據情況調整 client_max_body_size 50m; proxy_redirect off; #以下確保 gitlab中項目的 url 是域名而不是 http://git,不可缺少 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 反向代理到 gitlab 內置的 nginx proxy_pass http://git; index index.html index.htm; } }5.問題總結
external_url 是一個很重要的配置,GitLab的資源(例如:git創庫,文件,圖片)都是基于這個URL;說白了就是我們clone的地址;
external_url 的默認為:
external_url "GENERATED_EXTERNAL_URL"
其實就是 http://hostname
可以把這個值改成對應的主機名或者ip地址作為項目的倉庫地址為:
// http http://: /<組名>/<項目名>.git // ssh git@ :<組名>/<項目名>.git
也可以直接將其改成IP
external_url "http://10.2.237.56"
如果是ssh端口,需要修改gitlab_shell_ssh_port。
gitlab_rails["gitlab_shell_ssh_port"] = 23
如果要修改 ssh 的域名,就需要修改 gitlab_ssh_host
gitlab_rails["gitlab_ssh_host"] = "10.2.123.123"5.3 nginx端口
如果你修改了external_url 并加了端口,你會突然發現,gital 的 web 訪問不了了,其實你不用慌張,因為這是因為nginx 默認監聽的是 external_url 的端口
你只需要更改下 nginx 的端口配置就好了
# nginx["listen_port"] = nil nginx["listen_port"] = 80
以上的配置都是在 gitlab.rb 里面改的!!!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27263.html
摘要:本文章用于描述如何從零開始進行阿里云倉庫的搭建,以及過程中遇到的相關問題。涉及的內容包括,,,,。目標硬盤掛載阿里云額外購買的硬盤服務,需要僅掛載后才可以正常使用。域名代理免費代理的域名通過阿里云域名解析暴露到外網。 本文章用于描述如何從零開始進行阿里云倉庫的搭建,以及過程中遇到的相關問題。涉及的內容包括Docker,Nginx,Nexus,Gitlab,Https。 背景 需要搭建一...
摘要:下搭建下載守護進程方式啟動運行一個容器運行容器運行容器成功安裝后在瀏覽器中輸入服務器用戶名密碼進入管理界面參考文檔 docker下gitlab 搭建 下載 docker-compose.yml wget https://raw.githubusercontent... 守護進程方式啟動 docker-compose up -d 運行一個PostgreSQL容器 docker run ...
摘要:二配置修改配置文件編輯文件端口。將容器時間和在一個時區三訪問訪問,系統默認的管理員賬號為,第一次訪問,會要求初始化管理員賬號的密碼。 官方中文教程:https://www.gitlab.com.cn/ins... 官方安裝鏈接:https://about.gitlab.com/install 普通方式安裝請見:https://segmentfault.com/a/11... 環境...
摘要:整理資料的時候發現一些干貨,以下為搭建等測試環境的腳本,對不熟的同學可自行百度,持續更新。 整理資料的時候發現一些干貨,以下為搭建Jenkins、Registry、SVN、GIT、SonarQube、OpenSTF等測試環境的docker腳本,對docker不熟的同學可自行百度docker-compose,持續更新。 用法及注意事項 1,需要Linux,并安裝docker及docker...
閱讀 3225·2021-10-13 09:40
閱讀 3687·2019-08-30 15:54
閱讀 1308·2019-08-30 13:20
閱讀 2992·2019-08-30 11:26
閱讀 474·2019-08-29 11:33
閱讀 1099·2019-08-26 14:00
閱讀 2355·2019-08-26 13:58
閱讀 3365·2019-08-26 10:39