使用Docker在阿里云ECS上部署Gitlab,提供代码托管、CICD 和 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.0
    restart: unless-stopped
    ports:
      - "22:22"
      - "80:80"
      - "443:443"
    volumes:
      - ./gitlab-config:/etc/gitlab
      - ./data/gitlab-log:/var/log/gitlab
      - ./data/gitlab:/var/opt/gitlab

  runner:
      image: registry.cn-hangzhou.aliyuncs.com/openviewtech/gitlab-runner:alpine3.13-v14.7.1
      restart: always
      volumes:
          - ./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 token
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "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 = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/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上点个星星吧?
福利🔥添加 Gone框架-交流群,赠送 Golang 多套 学习资料,夯实基础👍🏻👍🏻

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dapeng-大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值