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 c752bc978a4b 4 days ago 1.78GB
2.啟動gitlab
運作:
docker run --detach --hostname 192.168.3.34 --publish 444:443 --publish 81:80 --publish 23:22 --name gitlab --restart always --volume /opt/gitlab/config:/etc/gitlab --volume /opt/gitlab/logs:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab c752bc978a4b
- –hostname :指定容器中綁定的域名,會在建立鏡像倉庫的時候使用到,這裡綁定192.168.3.34
- –publish:端口映射;容器内的443,80,22端口,分别映射到主控端的444,81,23端口
- –volume :挂載資料卷,映射到容器中去的容器外部存儲空間
- c752bc978a4b :鏡像的ID
資料存儲地方
本地的位置 | 容器的位置 | 作用 |
/opt/gitlab/config | /etc/gitlab | 用于存儲GitLab配置檔案 |
/opt/gitlab/logs | /var/log/gitlab | 用于存儲日志 |
/opt/gitlab/data | /var/opt/gitlab | 用于存儲應用資料 |
通過docker ps 指令看到gitlab容器證明已經運作成功了
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e12ae220c14 c752bc978a4b "/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 gitlab
3.配置GitLab
所有的配置都在唯一的配置檔案 /opt/gitlab/config/gitlab.rb。
本文是直接修改生成的配置檔案,當然也可以進入容器内部通過shell會話進行相關操作。
# 進入容器指令
docker exec -it gitlab /bin/bash
3.1.配置端口
編輯gitlab.rb檔案
修改如下幾個端口,修改與docker映射的端口一緻
# external_url 'GENERATED_EXTERNAL_URL'
external_url "http://192.168.3.34:81"
# gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['gitlab_shell_ssh_port'] = 23
# nginx['listen_port'] = nil
nginx['listen_port'] = 81
#如果用了Https,下面的端口也修改
# nginx['redirect_http_to_https_port'] = 80
說明:
- external_url:GitLab的資源都是基于這個URL,其實就是clone的位址,如果不配置端口81,使用http進行clone時,頁面連結會不顯示端口,複制出來的連結會無效;
- gitlab_shell_ssh_port:ssh端口,使用ssh進行clone時的端口;
- listen_port:nginx監聽的端口;
- redirect_http_to_https_port:使用https時,nginx監聽的端口;
注意:這裡修改完畢,會有一個坑,具體看目錄 3.4.重新建立
3.2.郵箱配置
GitLab的使用過程中涉及到大量的郵件,而郵件服務可以選擇使用Postfix,sendmai配置SMTP服務其中一種;
Postfix還要安裝其他東西,sendmai又是比較老,相對較下SMTP配置起來會比較友善。
編輯gitlab.rb檔案
添加如下配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]"
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'] = "[email protected]"
user["git_user_email"] = "[email protected]"
說明:
- 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”] :發出使用者,注意跟使用者名保持一緻
3.3.重新整理配置
# 進入容器
docker exec -it gitlab /bin/bash
# 重新整理配置
gitlab-ctl reconfigure
3.4.重新建立
經過上述的配置,會發現打不開gitlab的網頁,這是因為修改了external_url,會導緻container内部的項目80端口也被直接轉到了81端口,是以需要重新映射端口。
關閉容器
docker stop gitlab
删除容器
docker rm gitlab
重新建立容器
将原來的publish 81:80改為publish 81:81
docker run --detach --hostname 192.168.3.34 --publish 444:443 --publish 81:81 --publish 23:22 --name gitlab --restart always --volume /opt/gitlab/config:/etc/gitlab --volume /opt/gitlab/logs:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab c752bc978a4b