GitLab有分為CE(社區版)與EE(企業收費版)兩個版本,差別在EE有多出一些額外功能需要收費,EE的免費功能其實跟GitLab CE一樣,因此可以直接架設 GitLab EE,也許以後會想用收費功能也說不定。
1. 抓取gitlab image:
$ docker pull gitlab/gitlab-ee
2. 在local準備gitlab工作目錄:
$ mkdir -p gitlab/{config,data,logs}
gitlab folder下建立config, data, logs三個folder,這是為了local目錄能與容器內的gitlab工作目錄mapping,以後就不用進到容器。
3. 啟動gitlab:
$ docker run -d \
--name gitlab \
--hostname gitlab \
--restart always \
-p 4443:443 -p 8888:80 -p 2333:22 \
-v /home/vic/gitlab/config:/etc/gitlab \
-v /home/vic/gitlab/data:/var/opt/gitlab \
-v /home/vic/gitlab/logs:/var/log/gitlab \
gitlab/gitlab-ee:latest
-d: 背景執行
--name: 容器名稱
--hostname: 容器内主機名稱
--restart: docker重啟時,容器自動啟動。
-p: port mapping(hostPort:containerPort)
-v: 目錄mapping,HOST-DIR:CONTAINER-DIR
Note: 可先查看目前有哪些port還沒使用:
$ netstat -tnl
查看目錄結構:
$ tree -L 2 /home/vic/gitlab/
若沒有tree先安裝:
$ yum -y install tree
啟動後即可看到這畫面,表示還在建置要等一下:
過一陣子就可以了,第一次使用要重設root密碼:
登入後就可以開始用了!
4. 設定SMTP Server
這主要是要讓gitlab系統能夠登入我們的mail,來寄信給註冊gitlab的user。
在gitlab/config/目錄下找到gitlab.rb打開它,找到gitlab_rails['smtp_xxxx'] 這一個GitLab email server settings的地方:
以ZOHO為例(經測試ok的設定):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.zoho.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_user_name'] = "username@yourdomain"
gitlab_rails['smtp_password'] = "*"
gitlab_rails['smtp_domain'] = "smtp.zoho.com"
gitlab_rails['gitlab_email_from'] = 'username@yourdomain'
gitlab_rails['gitlab_email_reply_to'] = '
[email protected]'
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
5.測試寄信是否正常:
進入gitlab容器:
$ docker exec -it ${container_id} bash
$ gitlab-rails console
這邊要等一下才能下指令
$ Notify.test_email('收件者信箱', '標題', '內文').deliver_now
若出現錯誤: OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=error: wrong version number)
把gitlab_rails['smtp_tls'] 設為false即可!
Note:
重新載入 gitlab 設定檔:
$ gitlab-ctl reconfigure
重啟 gitlab 服務:
$ gitlab-ctl restart
重啟gitlab容器:
$ docker restart gitlab
權限問題可用這個方法修復:
$ sudo docker exec gitlab update-permissions
$ sudo docker restart gitlab