docker下gitlab 安裝配置使用-[Mac]

說(shuō)明

相關(guān)wiki

安裝及配置

1. gitlab 鏡像拉取

# gitlab-ce為穩(wěn)定版本,后面不填寫(xiě)版本則默認(rèn)pull最新latest版本
$ docker pull gitlab/gitlab-ce

拉取鏡像

2. 運(yùn)行 gitlab 鏡像

$ docker run -itd --name gitlab  -p 443:443 -p 8082:80 -p 222:22  --restart always -v /lnmp/gitlab/config:/etc/gitlab -v /lnmp/gitlab/logs:/var/log/gitlab -v /lnmp/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

# -d:后臺(tái)運(yùn)行
# -p:[外部:容器端口]將容器內(nèi)部端口向外映射,這里用8082是為了避免和nginx的沖突,我們?cè)儆胣ginx反向代理到8082端口
# --name:命名容器名稱(chēng)
# -v:宿主機(jī)指定目錄映射成容器內(nèi)數(shù)據(jù)文件夾或者日志、配置等文件夾


運(yùn)行成功后出現(xiàn)一串字符串表示

運(yùn)行成功

如果出現(xiàn)下面的錯(cuò)誤時(shí),你需要將/lnmp目錄加入到docker的共享目錄中
設(shè)置 Docker -> Preferences-> File Sharing.

image.png

3. gitlab配置

按上面的方式,gitlab 容器運(yùn)行沒(méi)問(wèn)題,但在 gitlab 上創(chuàng)建項(xiàng)目的時(shí)候,生成項(xiàng)目的 URL 訪問(wèn)地址是按容器的 hostname 來(lái)生成的,也就是容器的 id。作為 gitlab 服務(wù)器,我們需要一個(gè)固定的 URL 訪問(wèn)地址,于是需要配置 gitlab.rb(宿主機(jī)路徑)。

修改 gitlab.rb 文件

$ vim /lnmp/gitlab/config/gitlab.rb
# gitlab服務(wù)的地址
external_url 'http://liuxd.gitlab.com'

# ssh配置
gitlab_rails['gitlab_ssh_host'] = 'liuxd.gitlab.com'
gitlab_rails['gitlab_shell_ssh_port'] = 222


更新配置后,執(zhí)行gitlab-ctl reconfigure命令讓gitlab重新加載配置, 由于本次是docker安裝的,執(zhí)行時(shí)前面必須加docker exec,如果是linux的話,直接執(zhí)行gitlab-ctl reconfigure命令就行

docker exec -it gitlab gitlab-ctl reconfigure

注: 第一次初始化后會(huì)產(chǎn)生當(dāng)前gitlab的配置文件 /lnmp/gitlab/gitlab-rails/etc/gitlab.yml ,在后期維護(hù)的過(guò)程中盡量配置 /lnmp/gitlab/gitlab-rails/etc/gitlab.yml 文件,然后gitlab-ctl restart 即可生效新的配置;如果沒(méi)有必要不建議做第二次初始化。

修改配置后,重啟gitlab

$ docker restart gitlab

此時(shí)項(xiàng)目的倉(cāng)庫(kù)地址就變了。如果 ssh 端口地址不是默認(rèn)的 22,就會(huì)加上 ssh:// 協(xié)議頭
打開(kāi)瀏覽器輸入 ip 地址 如:http://127.0.0.1:8082. 可以查看gitlab頁(yè)面.
下面我們?cè)贋樗O(shè)置一個(gè)nginx反向代理

4. nginx反向代理

為了避免和nginx的80端口沖突,我們?cè)谟?code>docker啟動(dòng)gitlab時(shí)將它的映射端口指向了外部的8082端口

我們?cè)儆?code>nginx反向代理到8082端口,這樣就能用域名訪問(wèn)了

server {
    listen       80;
    server_name  liuxd.gitlab.com;

    index index.html index.htm index.php;
    access_log /lnmp/log/nginx/gitlab.access.log;
    error_log  /lnmp/log/nginx/gitlab.error.log;

    allow   all;
    deny    all;

    location / {
        proxy_pass http://127.0.0.1:8082/;
    }
}

5. 問(wèn)題處理

  • 安裝好后,打開(kāi)報(bào)502錯(cuò)誤
image.png

解決方案

  • 查看端口是否被占用(lsof -i :端口 命令), 如果是的話更換端口
  • 可能是內(nèi)存不足的問(wèn)題,關(guān)閉其他占用內(nèi)存的程序,再刷新

使用和創(chuàng)建一個(gè)項(xiàng)目

1. 第一次登錄

第一次進(jìn)入要輸入新的 root 用戶(hù)密碼,設(shè)置好之后確定就行,
下次就可以用root賬號(hào)或admin@example.com郵箱再加密碼登錄了

image.png

2. 新建一個(gè)項(xiàng)目組

新建一個(gè)組別

image.png

3. 新建一個(gè)項(xiàng)目

下面我們就可以新建一個(gè)項(xiàng)目了,點(diǎn)擊 Create a project

image.png

點(diǎn)擊 Create a project

如果沒(méi)有選同時(shí)生成readme選擇,創(chuàng)建完成后是下圖這樣, 在這里可以再次添加文件,readme等

image.png

如果選擇了同時(shí)生成readme選擇,創(chuàng)建完成后是這樣的:

image.png

創(chuàng)建完成!

應(yīng)用創(chuàng)建和oauth認(rèn)證授權(quán)

應(yīng)用創(chuàng)建

Gitlab允許用戶(hù)創(chuàng)建Applications,這些Applications可以通過(guò)OAuth2授權(quán)來(lái)訪問(wèn)Gitlab的相應(yīng)資源。

在Gitlab中, Applications分兩種:

  • 第一種是用戶(hù)級(jí)別的Application, 這一般通過(guò)用戶(hù)的Profile菜單進(jìn)入創(chuàng)建

  • 第二種是系統(tǒng)級(jí)別的Application, 這一般只有管理員權(quán)限的人通過(guò)Admin菜單進(jìn)入創(chuàng)建.

1. 用戶(hù)級(jí)別的Application

image.png

然后點(diǎn)擊提交后, 將得到應(yīng)用創(chuàng)建后的信息:

image.png

這個(gè)頁(yè)面的信息將由創(chuàng)建應(yīng)用的管理員分發(fā)給相應(yīng)的Application負(fù)責(zé)人, 后面, Application應(yīng)用負(fù)責(zé)人將使用這些信息做認(rèn)證。

注冊(cè)完成后, 我們可以看到應(yīng)用現(xiàn)在只有0個(gè)Clients, 即還沒(méi)有任何實(shí)例作為這個(gè)Application的實(shí)例進(jìn)行認(rèn)證:

image.png

2. 系統(tǒng)級(jí)別的Application

image.png
image.png
image.png

應(yīng)用oauth認(rèn)證授權(quán)

應(yīng)用注冊(cè)成功后, 應(yīng)用的實(shí)例就可以作為一個(gè)認(rèn)證實(shí)體向Gitlab認(rèn)證自己啦, 如果認(rèn)證成功, 就可以獲取一個(gè)代表某個(gè)用戶(hù)權(quán)限的access token對(duì)Gitlab的資源進(jìn)行訪問(wèn)了。
例如:Gerrit通過(guò)Gitlab認(rèn)證

GitLab as an OAuth2 client 這篇幫助文檔其實(shí)說(shuō)的就是這個(gè)過(guò)程

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容