文章目录
使用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 多套 学习资料,夯实基础👍🏻👍🏻