使用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.hqwc.cn/news/707397.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot代码案例(计算器、登录、留言板)

文章目录 一、计算器二、登录2.1 判断账号密码是否正确2.2 根据不同的用户作出不同反应 三、留言板3.1 提交数据3.2 展示所有数据 四、Lombok 工具包4.1 场景介绍4.2 如何使用 五、Edit Starters插件六、项目如何Debug七、项目命名规范 一、计算器 导入前端文件后端代码&#…

Risk Of Rain 雨中冒险2服务器开服联机教程

1、购买后登录服务器(百度莱卡云) 1.1、第一次购买服务器会安装游戏端,大约5分钟左右,如果长时间处于安装状态请联系客服 2、设置游戏端口 由于雨中冒险2的设置需要两个端口,它们用于游戏端口,查询端口&am…

理解 Python 中的 `super()` 与 `__init__()` 方法

在 Python 的面向对象编程中,super() 函数和 __init__() 方法是两个非常重要的概念。它们在类的继承和初始化过程中扮演着关键的角色。本文将深入探讨这两个概念的工作原理,并通过示例代码来展示它们的使用。 基本原理 __init__() 方法 __init__() 是…

K8S认证 | CKA题库 + 答案 | 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题: Cluster Master node Worker node k8s …

Vitis HLS 学习笔记--资源绑定-使用URAM(1)

目录 1. 简介 2. 代码分析 2.1 存储器代码 2.2 Implementation报告 2.3 存储器类型指定 2.4 存储器初始化 3. 总结 1. 简介 在博文《Vitis HLS 学习笔记--资源绑定-使用URAM-CSDN博客》中,介绍了如何在Vitis HLS环境下设计一个简易的存储器模型。 通过以下…

贝努利贝叶斯算法

基本用法 完整代码: from sklearn.naive_bayes import BernoulliNB from sklearn.datasets import make_blobs from sklearn.model_selection import train_test_split# 生成数据 X, y make_blobs(n_samples500, centers5, random_state8) X_train, X_test, y_tr…

企业或者个体户为什么会经营异常?

在复杂多变的市场经济环境中,无论是企业还是个体工商户,都可能遭遇经营异常的情况。及时识别这些预警信号并采取有效措施,对于避免潜在风险、保持健康发展至关重要。本文将深入探讨企业与个体户常见的经营异常类型、识别方法以及应对策略&…

MongoDB的安装和配置

简介 MongoDB 是一个开源的、面向文档的、非关系型数据库管理系统(NoSQL)。它使用JSON-like(BSON)文档来存储数据,使得数据结构更加灵活,易于理解和操作,特别适合处理大量的、半结构化或非结构…

智慧校园是教育信息化的首要目标

教育一词不止说的是学龄阶段的人,所有人的一生都离不开教育二字,从出世时分辩国际的颜色到学年到学校上学,再到走上社会作业后的各种训练,这些都离不开教育,仅仅不同阶段学习的办法有所不同。 其间,学龄时期…

Python代码:十、字符串连接

1、题目 小明有两个最好的朋友,他们的名字分别用input读入记录在两个字符串中,请使用字符串连接()帮助牛牛将两个朋友的名字依次连接在一个字符串中输出。 2、代码 import sysstr1 input() str2 input() str3 str1 str2 pr…

2024做安全测试必须要知道的几种方法!

前言 安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,其主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,安全指标不同,测试策略也不同。 但安全…

打包conda环境的两种方法:conda env export和Conda-Pack

打包conda环境的两种方法:conda env export和Conda-Pack 搭建项目环境可能是整个开发过程中最让人头疼的部分了。如何把我们辛辛苦苦搭建的环境打包起来,万一环境崩了还能迅速恢复,或者让别人能轻松地复制同样的设置呢? 今天&am…