Gitlab架設
參考文章:
Page設定參考:
Docker-compose
version: '3.7'
services:
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab網域名稱ex: gitlab.example.com'
container_name: gitlab-ee
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com'
gitlab_rails['GITLAB_TIMEZONE'] = 'Taipei'
gitlab_rails['time_zone'] = 'Asia/Taipei'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'support@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
gitlab_rails['gitlab_email_display_name'] = 'GitLab'
gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'mail.example.com'
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = '郵件主機user名稱'
gitlab_rails['smtp_password'] = '郵件主機user密碼'
gitlab_rails['smtp_domain'] = '郵件主機網域'
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
#gitlab_rails['smtp_tls'] = false
#gitlab_rails['smtp_ssl'] = false
gitlab_rails['smtp_force_ssl'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
gitlab_pages['enable'] = true
#gitlab_pages['access_control'] = true
#gitlab_pages['redirect_http'] = false
gitlab_pages['PORT'] = 8281
gitlab_pages['external_http'] = ['0.0.0.0:8281']
pages_external_url 'http://pages.example.com/'
ports:
- '8280:80'
- '8283:443'
- '8222:22' #ssh
- '8281:8081' #pages
volumes:
- '/volume1/docker/gitlab/config:/etc/gitlab'
- '/volume1/docker/gitlab/logs:/var/log/gitlab'
- '/volume1/docker/gitlab/data:/var/opt/gitlab'
#shm_size: '256m'
networks:
- gitlab
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
depends_on:
- web
volumes:
- /run/docker.sock:/var/run/docker.sock
- '/volume1/docker/gitlab/gitlab-runner:/etc/gitlab-runner'
networks:
- gitlab
networks:
gitlab:
name: gitlab-network
在檔案目錄下直接輸入docker-compose up -d
即可啟動服務
若想要看執行中的容器日誌,可以透過 log 指令來 trace
docker-compose logs -f gitlab
Docker Image 下載完成後會自動啟動,您可以用 images 指令確認 Image 已經下載至您的主機,儲存庫(Repository) 會顯示 GitLab 的 Image 名稱:
docker-compose images
Gitlab對系統資源要求比較吃重,連我的1621XS+ XEON-D 1521都花了十分鐘才初始化完成。
當瀏覽器出現登入畫面就表示安裝完成,系統預設最高權限帳號root,初始密碼存在/docker/gitlab/config/initial_root_password中,用指令sudo cat ./config/initial_root_password
查看,可以看到類似Password: iiJSmGyujvhoRl4WfGm2JHa0f1TCNkGyonqEtUth+mg=文字,後面那串就是密碼。順利登入後請立刻修改root密碼。
To test the runner container, you can use the following command to connect to the console:
sudo docker exec -it gitlab-runner /bin/bash
sudo docker exec -it gitlab-ee /bin/bash
寄信測試
這關每個人用的郵件系統不同無法給予建議,只能說我在這邊卡了快兩天,超哭...
咳,總之先用上述步驟進入gitlab-ee容器內,輸入指令測試發信
docker exec -it gitlab-ee /bin/bash
gitlab-rails console
ActionMailer::Base.smtp_settings
Notify.test_email('xxx@gmail.com', 'Hello World', 'This is a test message').deliver_now
Gitlab Runner
接下來進入註冊runner階段,不打算搞runner的人可跳過
進入gitlab-runner容器中,輸入sudo docker exec -it gitlab_runner_docker /bin/bash
執行gitlab-runner register
,接下來輸入gitlab網址,這邊不需打public ip或url,用內部的url即可
接下來要輸入token,參考這篇教學,這時候得回到剛架好的gitlab網站,點擊個人資料->編輯個人資料->存取憑證(畫面左邊),畫面中間會有個人存取權杖資訊,取一個名稱並指定到期日(我是點到2034年XD),然後勾選API
,就會創建一個token,趕緊把他複製下來glpat-nVP-3hRTo4px-YQjvrbt
畫面大概這樣
修改 GitLab 設定
修改 GitLab 設定檔 gitlab.rb
現在重點來了!Gitlab 預設值和您的環境一定有些不同,因此必須修改設定才能正常運作。修改設定檔有兩種方式,一種是進入 GitLab 容器(Container)去修改 “/etc/gitlab/gitlab.rb”:
(查看 GitLab Container ID)
docker ps
(進入 GitLab 容器)
docker exec -it <Container ID> bash
(進入容器後先安裝 vi)
apt-get update
apt-get install vim
(修改 GitLab 設定檔 gitlab.rb)
vi /etc/gitlab/gitlab.rb
另一種方法是直接修改此路徑對應到主機的 volumes。volumes 會將容器裡面的目錄連結到容器外部主機的目錄,使用 docker 的 volume list 指令可以看到目前系統產生的 volumes 有哪些,以我的主機為例:
docker volume list
上面紅色圈選的地方就是 docker-compose.yml 裡面設定的 GitLab volumes:
...(上略)
volumes:
- gitlab_config:/etc/gitlab
- gitlab_logs:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
volumes:
gitlab_config:
gitlab_logs:
gitlab_data:
不知道各位有沒有發現,這裡的 volumes 目錄設定和官網範例不太一樣,官網的目錄是 mapping 到主機的絕對路徑:
– /srv/gitlab/data:/var/opt/gitlab
– /srv/gitlab/logs:/var/log/gitlab
– /srv/gitlab/config:/etc/gitlab
如果依照官網範例設定的話,就會出現 volumes 目錄裡面沒有檔案,或是沒有權限讀寫目錄等奇奇怪怪的問題,一勞永逸的方法就是只設定目錄名稱,由系統自行建立 volumes 目錄。docker compose 會將這些設定的 volumes 前面加上登入的使用者名稱,例如我登入的名稱是 wizigo,所以實際產生的 volumes 目錄會是這個樣子:wizigo<您設定的目錄名稱>,目錄是位在 Ubuntu 路徑 :/var/lib/docker/volumes/,我們可以使用管理者權限去編輯設定檔 gitlab.rb。要特別注意的是,volumes 目錄後面會自動產生 “data” 目錄,裡面才是放置檔案的真正位置。:
sudo vi /var/lib/docker/volumes/wizigo_gitlab_config/_data/gitlab.rb
Page
以下只是暫存參考資料尚未整理,因為我移除gitlab了orz
Have a domain for Pages that is not a subdomain of your GitLab instance domain.
| GitLab domain | Pages domain | Does it work? |
| :------------------: | :-----------------: | :-----------: |
| example.com
| example.io
| Yes |
| example.com
| pages.example.com
| No |
| gitlab.example.com
| pages.example.com
| Yes |