使用Docker在阿里云ECS上部署Gitlab,提供代碼托管、CICD 和 docker鏡像服務

文章目錄

  • 使用Docker在阿里云ECS上部署Gitlab
    • 1.購買一個數據,掛載到`/data`用于存儲gitlab相關數據
    • 2. 部署docker引擎
    • 3. 調整ssh的默認端口,將22端口留給gitlab
    • 4. 部署gitlab
    • 5. 進入docker容器獲取gitlab的默認密碼
    • 6. 登錄gitlab,完成gitlab-ruuner的設置
    • 7. 啟動gitlab-ruuner
    • 8. 回到gitlab web界面,查看runner的狀態
    • 9. 使用docker login 測試docker鏡像服務器

使用Docker在阿里云ECS上部署Gitlab

這里利用docker容器化方式部署gitlab,利用docker-gitlab-ruuner 來運行gitlab-cicd腳本。
很多同學可能不知道:gitlab本身還提供了docker鏡像倉庫服務,本文將一起介紹。

我們這里使用 https://gitlab.goner.fun/ 作為git網頁的地址;使用 https://r.gitlab.goner.fun 作為docker鏡像的服務地址。

1.購買一個數據,掛載到/data用于存儲gitlab相關數據

需要做如下操作:

# 查看有哪些硬盤
fdisk -l# 格式化數據盤
mkfs.ext4 /dev/vdb# 將掛載信息寫入 /etc/fstab
echo "/dev/vdb     /data ext4 defaults 1 1" >> /etc/fstab# 創建 /data 目錄作為掛載點
mkdir /data# 嘗試自動掛載
mount -a# 檢查數據盤掛載情況,查看是否掛載成功
df -h

手動廣告

我開發了一個golang的依賴注入框架名字叫Gone, Gone 是可以高效開發Web服務的Golang依賴注入框架
github地址:https://github.com/gone-io/gone
文檔地址:https://goner.fun/zh/
幫忙在gitlab上點個星星吧?


2. 部署docker引擎

如下操作:

# 1.軟件更新
yum update# 2.安裝docker的倉庫的repo
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 3.安裝docker引擎和 docker compose 等內容
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 4.調整docker引擎的數據目錄,使其數據存儲到/data/docker
ln -s /data/docker /var/lib/docker# 5.啟動 docker引擎
systemctl start docker.service# 6.測試
docker run busybox /bin/sh -c "echo success"

3. 調整ssh的默認端口,將22端口留給gitlab

# 1.修改sshd配置文件,增加配置`Port 27132`
vim /etc/ssh/sshd_config# 2.重啟sshd
systemctl restart sshd

記得要到安全組去放開新的ssh端口,否則登錄不到服務器。

4. 部署gitlab

# 1.創建目錄并進入
mkdir -p /data/gitlab && cd /data/gitlab# 2.編寫docker-compose文件
echo """
version: "3.3"
services:gitlab:container_name: 'gitlab.goner.fun' # 域名需要替換成你自己的image: gitlab/gitlab-ce:16.2.8-ce.0restart: unless-stoppedports:- "22:22"- "80:80"- "443:443"volumes:- ./gitlab-config:/etc/gitlab- ./data/gitlab-log:/var/log/gitlab- ./data/gitlab:/var/opt/gitlabrunner:image: registry.cn-hangzhou.aliyuncs.com/openviewtech/gitlab-runner:alpine3.13-v14.7.1restart: alwaysvolumes:- ./runner-config.toml:/etc/gitlab-runner/config.toml- /var/run/docker.sock:/var/run/docker.sock
"""> docker-comopse.yaml# 3.創建gitlab配置目錄
mkdir gitlab-config# 4.創建gitlab配置文件
echo """
## 配置gitlab對外的地址
external_url 'https://gitlab.goner.fun/' #域名需要替換成你自己的## 配置gitlab docker 鏡像服務器的對外地址
registry_external_url 'https://r.gitlab.goner.fun' #域名需要替換成你自己的## 開啟 docker 鏡像服務
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "gitlab.wfsanwen.com"
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"## 開啟nginx代理
nginx['enable'] = true
nginx['client_max_body_size'] = '2048m'
nginx['redirect_http_to_https'] = true           ## 使用 letsencrypt 為服務器自動頒布https證書
letsencrypt['enable'] = true
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
""" > gitlab-config/gitlab.rb# 5.使用docker compose啟動gitlab,會等待比較久的時間
docker compose up -d gitlab# 6. 跟蹤啟動日志
docker compose logs -f gitlab

5. 進入docker容器獲取gitlab的默認密碼

cd /data/gitlab# 進入容器
docker compose exec -it gitlab /bin/bash# 獲取默認密碼,默認用戶是 root
grep 'Password:' /etc/gitlab/initial_root_password

6. 登錄gitlab,完成gitlab-ruuner的設置

  • 修改密碼,這是必須完成的
  • 進入管理頁面:https://gitlab.goner.fun/admin
  • 從runner頁面獲取runner token
    在這里插入圖片描述在這里插入圖片描述

設置tags為docker,在.gitlab-ci.yaml 中的tags標簽有docker標記的的job都會被調度導該runner

在這里插入圖片描述

7. 啟動gitlab-ruuner

# 1. 進入gitlab安裝目錄
cd /data/gitlab# 2. 編輯docker runner 配置文件
echo """
concurrent = 1
check_interval = 0[session_server]session_timeout = 1800[[runners]]name = "gitlab-ci-docker"url = "https://gitlab.goner.fun/"  # 域名需要替換成你自己的token = "glrt-xxxxxxxxxxxxxx"   # 從上一步獲取的 runner tokenexecutor = "docker"[runners.custom_build_dir][runners.cache][runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = falseimage = "registry.cn-hangzhou.aliyuncs.com/openviewtech/docker:19.03.12"helper_image = "registry.cn-hangzhou.aliyuncs.com/openviewtech/gitlab-runner-helper:x86_64-198d2720"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]shm_size = 0
""" > runner-config.toml# 3. 啟動 gitlab-ruuner
docker compose up -d runner# 4. 查看gitlab-ruuner日志
docker compose logs -f ruuner

8. 回到gitlab web界面,查看runner的狀態

進入頁面:https://gitlab.wfsanwen.com/admin/runners

  • Online,表示runner已經成功上線
  • Offline,表示還有問題,需要再檢查
    在這里插入圖片描述

9. 使用docker login 測試docker鏡像服務器

docker login r.gitlab.goner.fun # 域名替換為你自己的
#輸入你在gitlab上的賬號密碼

手動廣告

我開發了一個golang的依賴注入框架名字叫Gone, Gone 是可以高效開發Web服務的Golang依賴注入框架
github地址:https://github.com/gone-io/gone
文檔地址:https://goner.fun/zh/
幫忙在gitlab上點個星星吧?


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13495.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13495.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13495.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux ndk編譯搭建測試

一、ndk下載 NDK 下載 | Android NDK | Android Developers 二、ndk環境變量配置 ndk解壓: unzip android-ndk-r26d-linux.zip 環境變量配置: export NDK_HOME/rd/own/test/android-ndk-r26d/ export PATH$PATH:$NDK_HOME 三、編譯測試驗證 …

虛函數應用和原理

虛函數的表現形式 用子類初始化父類指針, 調用虛函數時, 仍然調用的是子類的虛函數 測試代碼如下 #include <iostream> #include <string.h>using namespace std;class A { public:void test() { cout << a << endl; };virtual void test2 (){ cout …

LeetCode-2589. 完成所有任務的最少時間【棧 貪心 數組 二分查找 排序】

LeetCode-2589. 完成所有任務的最少時間【棧 貪心 數組 二分查找 排序】 題目描述&#xff1a;解題思路一&#xff1a;貪心暴力解題思路二&#xff1a;棧二分查找解題思路三&#xff1a;簡化版 題目描述&#xff1a; 你有一臺電腦&#xff0c;它可以 同時 運行無數個任務。給你…

解鎖電商數據之門:京東商品詳情API接口的深度解析與應用指南

一、京東商品詳情API簡介 京東商品詳情API是京東開放平臺提供的一項服務&#xff0c;允許第三方應用通過調用接口獲取京東商城中商品的詳細信息。這些信息包括但不限于商品名稱、價格、庫存、詳情描述、用戶評價等。 二、功能特點 數據全面&#xff1a;提供商品的全方位數據…

mac安裝兩個版本谷歌瀏覽器;在mac運行不同版本的chrome瀏覽器

場景 正常情況下&#xff0c;mac上只能安裝一個版本的chrome瀏覽器&#xff0c;即使你安裝了兩個版本的&#xff0c;打開老舊版本時候也會自動切換成最新版的瀏覽器 故本文主要解決如何下載和在mac運行不同版本的chrome瀏覽器 文章目錄 場景一、下載1.mac本身就有一個最新版ch…

Java語言saas模式云HIS系統源碼 前端Angular+后臺SpringBoot云HIS系統源碼 HIS系統適合哪些類型的醫院?

Java語言saas模式云HIS系統源碼 前端Angular后臺SpringBoot云HIS系統源碼 HIS系統適合哪些類型的醫院&#xff1f; 云HIS系統&#xff08;醫院信息系統&#xff09;是對醫院及其所屬各部門的人、財、物進行綜合管理&#xff0c;對在醫療活動各階段產生的數據進行采集、儲存、處…

CCF20181201——小明上學

CCF20181201——小明上學 代碼如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int r,y,g,n,k[101],t[101],sum0;cin>>r>>y>>g;cin>>n; for(int i0;i<n;i){cin>>k[i]>>t[i];if(k[i]0||k[i]1)sumt[i];…

ITSM的服務臺如何讓工作更流暢

在現代企業的信息技術管理框架內&#xff0c;IT服務管理&#xff08;IT Service Management, ITSM&#xff09;體系扮演著至關重要的角色&#xff0c;而其中的服務臺則是這一復雜體系的心臟地帶。服務臺不僅僅是解答技術疑問的一線窗口&#xff0c;更是企業IT運維效率與用戶滿意…

C++初探_關聯容器

關聯容器將鍵和值關聯在一起&#xff0c;并使用鍵來查找值。STL提供的四種關聯容器&#xff1a; &#xff08;1&#xff09;set 鍵類型與值類型相同&#xff0c;鍵值對一一對應&#xff1b; &#xff08;2&#xff09;multiset 鍵類型與值類型相同&#xff0c;一個鍵可能對…

FENDI CLUB啤酒,為何女生喜歡?

精釀啤酒已經成了女生喜歡的飲品&#xff0c;在日劇《無法成為野獸的我們》里&#xff0c;主人公小晶永遠保持標準笑容&#xff0c;完美完成所有的工作。只有一個人的時候&#xff0c;她才會放下習慣性的微笑&#xff0c;顯露自己的疲憊。小晶緩解疲憊&#xff0c;就是下班后去…

盡微好物:從0到10億+的抖音電商的TOP1“聯盟團長”,如何使用NineData實現上云下云

杭州盡微供應鏈是抖?平臺?均帶貨10E的TOP1“聯盟團?”&#xff0c;是字節跳動?級代理商&#xff0c;巨量千川指定服務商&#xff0c;擁有商品庫9萬&#xff0c;是?業領先的電商供應鏈平臺&#xff0c;達?陪跑機構。 杭州盡微供應鏈以天貓、京東抖音電商業務為依托&#x…

代碼隨想錄Day41(01背包問題):卡瑪網46、Leetcode416

卡瑪網46&#xff1a; 問題描述&#xff1a; 小明是一位科學家&#xff0c;他需要參加一場重要的國際科學大會&#xff0c;以展示自己的最新研究成果。他需要帶一些研究材料&#xff0c;但是他的行李箱空間有限。這些研究材料包括實驗設備、文獻資料和實驗樣本等等&#xff0…

HCIP-Datacom(H12-821)題庫補充(5月16日)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;完整題庫請掃描上方二維碼訪問&#xff0c;持續更新中。 以下關于配置防火墻安全優先級的描述&#xff0c;錯誤的是哪一項&#xff1f; A&#xff1a;不新建與默認安全區域同名的安全區域 B&#xff1a;同一系統中&#xff0c…

「服務器」Nginx詳解

本文主要介紹Nginx的原理和服務器部署Node.js項目。 一、Nginx原理 Nginx是一個高性能的HTTP服務器和反向代理服務器&#xff0c;它以高穩定性、豐富的功能集、簡單的配置和低資源消耗而聞名。以下是對Nginx的一些詳解&#xff1a; 1. Nginx是什么&#xff1f; Nginx&#x…

鑷子蠟燭如何設置止盈止損?Anzo Capital昂首資本盈利收場

通過上一篇文章各位聰明的投資者&#xff0c;都已經知道了什么是鑷子蠟燭圖以及如何抓住反轉進行交易&#xff0c;同時也有很多投資者不知道如何設置止盈止損&#xff1f;今天Anzo Capital昂首資本就和各位投資者一起探討如何盈利收場。 看跌的鑷子模式如何交易&#xff1f;首…

【數據結構】樹(Tree)

???專欄&#xff1a;數據結構 &#x1f9d1;?&#x1f393;個人主頁&#xff1a;SWsunlight 目錄 一、基本概念&#xff1a; 1、定義&#xff1a; ?編輯 ?編輯 2、樹的成分&#xff1a; 3、樹的性質&#xff1a; 二、存儲方式&#xff1a; ?編輯 雙親表示法…

C++-float與double

float和double是兩種不同的數據類型&#xff0c;用于存儲浮點數&#xff08;小數&#xff09;。 1.精度&#xff1a; float是單精度浮點數&#xff0c;占用4個字節&#xff0c;通常精度為6-9位小數。 double是雙精度浮點數&#xff0c;占用8個字節&#xff0c;通常精度為15-…

Open3D 點云多平面探測(Python)

文章目錄 一、簡介二、實現代碼三、實現效果參考資料一、簡介 Open3D為我們提供了一種點云多平面探測的算法,該算法使用基于魯棒統計的方法進行平面補丁檢測。該算法具體過程:首先將點云細分為更小的塊(使用八叉樹),然后嘗試為每個塊匹配一個平面。如果平面通過了魯棒平面性…

【C語言每日題解】用函數來模擬實現strlen()、strcpy()、strcmp()、strcat()

&#x1f970;歡迎關注 輕松拿捏C語言系列&#xff0c;來和 小哇 一起進步&#xff01;? 學習了函數后&#xff0c;老師讓我們用函數來實現上面這四個字符串函數。 我們首先來了解一下這四個字符串函數&#xff1a; 1.strlen函數 用于獲取字符串長度&#xff08;不包括末尾…

【源碼】相親交友系統全新UI/情感測試/婚慶中介/交友系統

【交友】相親交友系統全新UI/情感測試/婚慶中介/交友系統 帶商城&#xff0c;情感測試。 https://www.52codes.cc/codes/qt