搭建属于自己的 Git 仓库:GitLab

搭建属于自己的 Git 仓库:使用 GitLab

文章目录

    • [搭建属于自己的 Git 仓库:使用 GitLab](#搭建属于自己的 Git 仓库:使用 GitLab)
    • [什么是 GitLab?](#什么是 GitLab?)
    • 准备工作
    • [安装 Docker](#安装 Docker)
    • [使用Docker Compose 快速构建GitLab](#使用Docker Compose 快速构建GitLab)

在现代软件开发中,版本控制系统(VCS)是不可或缺的工具,它们帮助开发团队管理代码库,跟踪更改,并协作开发项目。Git 是一种流行的分布式版本控制系统,而 GitLab 是一个开源的 Git 仓库管理工具,提供了强大的功能,包括代码评审、CI/CD、问题跟踪等。本文将介绍如何在自己的服务器上搭建一个 GitLab 实例,并创建属于自己的 Git 仓库。

什么是 GitLab?

GitLab 是一个基于 Git 的开源平台,提供了代码仓库管理、CI/CD(持续集成和持续交付)、代码审查、问题跟踪和项目管理等功能。GitLab 有社区版(GitLab CE)和企业版(GitLab EE),社区版是免费的,企业版提供了更多高级功能。

准备工作

在开始之前,确保你有以下准备工作:

一台运行 Linux(如 Ubuntu 或 CentOS)的服务器。

具有 sudo 权限的用户。

已安装 Docker 和 Docker Compose(可选,用于简化 GitLab 安装)。

安装 Docker

如果你的服务器尚未安装 Docker,可以参照文章:在CentOS中安装Docker

也可以使用下面命令快速安装:

bash 复制代码
# 更新包索引
sudo apt update

# 安装必要的软件包
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加 Docker APT 软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 更新包索引
sudo apt update

# 安装 Docker
sudo apt install docker-ce

# 启动并启用 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

使用Docker Compose 快速构建GitLab

1、从docker compose快速搭建GitLab

使用docker compose在docker环境下快速部署:

搭建docker compose环境参考文章:docker compose快速安装

学习docker compose参考文章(本篇博客不需要,只是推荐学习)DockerCompose(初识、安装、部署) Docker Compose 命令说明文档

docker-compose.yaml文件链接:https://github.com/sameersbn/docker-gitlab/blob/master/docker-compose.yml

可以点击下载,也可以新建docker-compose.yaml文件,将内容复制粘贴。

也可以直接复制(但是建议从官网下载,可能版本会更新之类的):

yaml 复制代码
version: '2.3'

services:
  redis:
    restart: always
    image: redis:6.2
    command:
    - --loglevel warning
    volumes:
    - redis-data:/data:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:14-20230628
    volumes:
    - postgresql-data:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm,btree_gist

  gitlab:
    restart: always
    image: sameersbn/gitlab:17.0.0
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - gitlab-data:/home/git/data:Z
    healthcheck:
      test: ["CMD", "/usr/local/sbin/healthcheck"]
      interval: 5m
      timeout: 10s
      retries: 3
      start_period: 5m
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=notifications@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=
    - OAUTH_BITBUCKET_URL=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AUTH0_SCOPE=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

volumes:
  redis-data:
  postgresql-data:
  gitlab-data:

打开编辑文件内容:

2、部署到服务器并访问

  1. 新建文件夹:

    shell 复制代码
    mkdir /home/gitlab
  2. 上传文件docker-compose.yaml,也可以新建文件,将内容粘贴过去。

  3. 启动docker compose

    bash 复制代码
    docker-compose up -d
    • -d参数:后台启动。
  4. 使用docker ps命令可以看见新增的三个docker容器:

3、浏览器访问

浏览器访问:http://192.168.200.128:80即可进入GitLab的页面。

按理来说我用GitLab来整合Jenkins,但是服务器资源受限,没有配置成功,我换成了github来演示。

相关推荐
_君莫笑3 小时前
大厂Git使用规范
git
无心水10 小时前
【Hermes:安全、权限与生产环境】39、智能体也会犯错?Hermes 纠错、回滚与遗忘机制全指南 —— 让 AI 的错误像 Git 一样可逆可控
人工智能·git·安全·mcp协议·openclaw·hermes·honcho
南境十里·墨染春水14 小时前
linux学习进展 git详解
linux·git·学习
zhangfeng113315 小时前
CodeBuddy ai对话框上面的git docs terminal Rulds 干嘛用的,以thinkphp fastadmin 为例,插件市场
人工智能·git·编程
OYangxf16 小时前
Git Conflict Resolution
大数据·git·elasticsearch
高斯林.神犇16 小时前
Git全套流程
git
次元工程师!18 小时前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow
怣疯knight18 小时前
【无标题】
git
Jim-zf19 小时前
git 锁文件
git
lcx_defender19 小时前
Git常见操作与指令
git