天天看點

docker搭建GitLab環境 for MAC or OSX

作者:易創空間棧

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