1、下載鏡像
官方鏡像地址:https://hub.docker.com/r/gitlab/gitlab-ce ,根據自己需要下載指定版本
[root@vanje-dev01 ~]# docker pull gitlab/gitlab-ce:11.10.4-ce.0
鏡像大小接近2個G,下載速度取決於宿主機網絡,耐心等待即可。
2、啟動
[root@vanje-dev01 ~]# docker run -d \
-p 18443:443 \
-p 18080:80 \
-p 12222:22 \
--name gitlab \
--restart always \
-v /opt/gitlab/config:/etc/gitlab \
-v /opt/gitlab/logs:/var/log/gitlab \
-v /opt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:11.10.4-ce.0
-p端口映射,前面為宿主機端口,后面為容器端口;-v 是目錄掛載,把容器中gitlab數據進行持久化設置;宿主機目錄無需創建,容器運行時,如果對應目錄不存在,會默認創建。
3、修改Gitlab訪問地址
docker安裝gitlab,創建項目時,默認項目URL訪問地址顯示的是容器主機地址(容器id),所以我們需要修改為一個固定可以外部訪問的地址及宿主機地址,這樣才可以進行pull/push代碼
[root@vanje-dev01 ~]# vim /opt/gitlab/config/gitlab.rb
### 取消external_url注釋,地址為宿主機地址
external_url 'http://172.16.11.248'
## 重載服務
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl reconfigure
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl restart
注意:
1、上面external_url 地址不要加映射的主機端口號,否則會無法訪問gitlab。
2、這樣配置在后面添加用戶發郵件通知設置密碼時,會出現gitlab服務url后面的端口丟失不能正常跳轉到gitlab頁面,解決這個問題有兩種方案:
方案一:
[root@vanje-dev01 ~]# vim /opt/gitlab/data/gitlab-rails/etc/gitlab.yml
## 把端口號修改為映射的主機端口,默認端口為80 host: 172.16.11.248 port: 18080 https: false
## 不要執行reconfigure命令重新加載,否則端口號還是會變為80,直接重啟即可
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl restart
還有一種方式就是在容器啟動時傳遞環境變量設置gitlab訪問地址及端口,這樣也不需要再進行external_url地址修改(推薦使用這種方式)
方案二:
### 刪除之前容器重新創建
[root@vanje-dev01 ~]# docker rm -f gitlab
[root@vanje-dev01 ~]# rm -rf /opt/gitlab/
[root@vanje-dev01 ~]# docker run -d \ --env GITLAB_OMNIBUS_CONFIG="external_url 'http://172.16.11.248:18080/';" \ -p 18443:443 \ -p 18080:18080 \ -p 12222:22 \ --name gitlab \
--restart always \ -v /opt/gitlab/config:/etc/gitlab \ -v /opt/gitlab/logs:/var/log/gitlab \ -v /opt/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:11.10.4-ce.0
注意:這種方式端口映射時直接就映射為自己想要的端口,因為我們啟動時,已經把gitlab在容器內的端口設置為18080了
4、訪問
訪問地址:http://172.16.11.248:18080
第一次訪問會要求我們設置root密碼,設置好后登陸即可。
5、設置郵箱
gitlab在實際工作使用中,admin新開賬號時,會自動給新賬號綁定的郵箱發送通知郵件,點擊郵件中的鏈接進行激活,首次登陸gitlab會進行密碼設置
[root@vanje-dev01 ~]# vim /opt/gitlab/config/gitlab.rb
## 找到以下配置項,取消注釋 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "****@vanje.com.cn" gitlab_rails['smtp_password'] = "****" gitlab_rails['smtp_domain'] = "vanje.com.cn" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = "****@vanje.com.cn" ## 新增
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl reconfigure
注意:這里用的是阿里雲的郵箱,不同的郵箱需要去看郵箱提供商提供的幫助。
如果想測試下郵箱設置是否成功,進入gitlab容器執行以下操作:
[root@vanje-dev01 ~]# docker exec -it gitlab /bin/bash
root@f16536597cee:/# gitlab-rails console
irb(main):002:0> Notify.test_email('*****@qq.com', 'Message Subject', 'Message Body').deliver_now ### 說明
Notify.test_email('收件人郵箱', '郵件標題', '郵件正文').deliver_now
這樣,再創建用戶時,無需設置密碼,gitlab會給用戶綁定 的郵箱發送郵件,點擊設置密碼鏈接,用戶即可自己對gitlab賬號進行密碼設置。