使用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.mzph.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 三、编译测试验证 …

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】 题目描述:解题思路一:贪心暴力解题思路二:栈二分查找解题思路三:简化版 题目描述: 你有一台电脑,它可以 同时 运行无数个任务。给你…

mac安装两个版本谷歌浏览器;在mac运行不同版本的chrome浏览器

场景 正常情况下,mac上只能安装一个版本的chrome浏览器,即使你安装了两个版本的,打开老旧版本时候也会自动切换成最新版的浏览器 故本文主要解决如何下载和在mac运行不同版本的chrome浏览器 文章目录 场景一、下载1.mac本身就有一个最新版ch…

Java语言saas模式云HIS系统源码 前端Angular+后台SpringBoot云HIS系统源码 HIS系统适合哪些类型的医院?

Java语言saas模式云HIS系统源码 前端Angular后台SpringBoot云HIS系统源码 HIS系统适合哪些类型的医院? 云HIS系统(医院信息系统)是对医院及其所属各部门的人、财、物进行综合管理,对在医疗活动各阶段产生的数据进行采集、储存、处…

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运维效率与用户满意…

FENDI CLUB啤酒,为何女生喜欢?

精酿啤酒已经成了女生喜欢的饮品&#xff0c;在日剧《无法成为野兽的我们》里&#xff0c;主人公小晶永远保持标准笑容&#xff0c;完美完成所有的工作。只有一个人的时候&#xff0c;她才会放下习惯性的微笑&#xff0c;显露自己的疲惫。小晶缓解疲惫&#xff0c;就是下班后去…

尽微好物:从0到10亿+的抖音电商的TOP1“联盟团长”,如何使用NineData实现上云下云

杭州尽微供应链是抖⾳平台⽉均带货10E的TOP1“联盟团⻓”&#xff0c;是字节跳动⼀级代理商&#xff0c;巨量千川指定服务商&#xff0c;拥有商品库9万&#xff0c;是⾏业领先的电商供应链平台&#xff0c;达⼈陪跑机构。 杭州尽微供应链以天猫、京东抖音电商业务为依托&#x…

HCIP-Datacom(H12-821)题库补充(5月16日)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;完整题库请扫描上方二维码访问&#xff0c;持续更新中。 以下关于配置防火墙安全优先级的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;不新建与默认安全区域同名的安全区域 B&#xff1a;同一系统中&#xff0c…

镊子蜡烛如何设置止盈止损?Anzo Capital昂首资本盈利收场

通过上一篇文章各位聪明的投资者&#xff0c;都已经知道了什么是镊子蜡烛图以及如何抓住反转进行交易&#xff0c;同时也有很多投资者不知道如何设置止盈止损&#xff1f;今天Anzo Capital昂首资本就和各位投资者一起探讨如何盈利收场。 看跌的镊子模式如何交易&#xff1f;首…

【数据结构】树(Tree)

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 一、基本概念&#xff1a; 1、定义&#xff1a; ​编辑 ​编辑 2、树的成分&#xff1a; 3、树的性质&#xff1a; 二、存储方式&#xff1a; ​编辑 双亲表示法…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ 学习了函数后&#xff0c;老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数&#xff1a; 1.strlen函数 用于获取字符串长度&#xff08;不包括末尾…

【源码】相亲交友系统全新UI/情感测试/婚庆中介/交友系统

【交友】相亲交友系统全新UI/情感测试/婚庆中介/交友系统 带商城&#xff0c;情感测试。 https://www.52codes.cc/codes/qt

从开发板导出根文件系统并修改(Ubuntu)

前面提到过基于ubuntu-base去构建根文件系统基于Ubuntu-base构建根文件系统-CSDN博客&#xff0c;但是有时候我们并不需要重头开始&#xff0c;可以基于现有的根文件系统做调整。又或者我们直接在出厂的系统上去搭建好自己的运行环境并且编译出自己想要的程序&#xff0c;现在要…

医学科技查新中对查新点的撰写方法!附案例讲解!

我国的科技查新工作最早是从医学领域开始的&#xff0c;始于1985年中国科学院医学情报所&#xff0c;后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c…

上海初中生古诗文大会倒计时4个月:单选题真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间&#xff0c;备考要趁早&#xff0c;因为知识点还是相对比较多的。这些知识点对于初中语文的学习也是很有帮助的。 今天我们继续来看10道选择题真题和详细解析&#xff0c;以下题目截取自我独家制作的在线真题集&#xff0c;都是…

取名时,要考虑生肖的影响

亲爱的宝宝们&#xff0c;又是一年五一小长假&#xff0c;峰民想大家都在休假吧&#xff01;真幸福&#xff01;峰民每天都在工作&#xff0c;几乎没有休过假&#xff0c;因为每天全国各地找我们取名改名客户是络绎不绝&#xff0c;峰民虽然也很辛劳&#xff0c;但也很有成就感…

【c++算法篇】滑动窗口

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;算法笔记仓 目录 1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数 III4.将 x 减到 0 的最小操作数5.水果成篮6.找到字符串中所有字母异位词7.串联所有单词的子串8.最小覆盖子串 滑动窗…

李宏毅-Self-attention机制详解

原视频链接&#xff1a;attention 一. 基本问题分析 1. 模型的input 无论是预测视频观看人数还是图像处理&#xff0c;输入都可以看作是一个向量&#xff0c;输出是一个数值或类别。然而&#xff0c;若输入是一系列向量&#xff0c;长度可能会不同&#xff0c;例如把句子里的…

C 深入指针(4)

目录 一、字符指针变量 1 初始化 2 与字符串数组的区别 二、数组指针变量 1 初始化 2 二维数组传参本质 三、函数指针变量 1 初始化 2 用法 四、typedef关键字 五、函数指针数组 一、字符指针变量 1 初始化 //VS2022 x64 #include <stdio.h> int main() {…