使用docker compose安装gitlab

news/2024/12/28 0:01:47/

使用docker compose安装gitlab

    • GitLab简介
    • 设置GITLAB_HOME路径
    • 创建docker挂载目录
    • 获取可用的GitLab版本
    • 编写docker-compose.yml文件
    • 启动docker
    • 基础配置
      • GITLAB_OMNIBUS_CONFIG
      • 修改配置
    • 中文设置
    • 数据库配置
    • 系统邮箱配置

GitLab简介

‌GitLab是一个基于Git的开源项目,旨在帮助团队更高效地合作和开发软件。‌它使用Ruby on Rails框架构建,提供了一个自托管的Git仓库管理工具,支持版本控制、代码审查、持续集成和持续部署等功能。‌

主要功能包括:

-‌ 版本控制‌:用户可以创建分支、合并代码,并处理冲突,确保代码的历史和变更管理得当。
‌- 代码审查‌:团队成员可以通过拉取请求(Pull Requests)对提交的代码进行评论和讨论,确保代码质量。
‌- 持续集成/持续部署(CI/CD)‌:GitLab内置了CI/CD功能,支持自动化的构建、测试和部署流程,提高开发效率。
‌- 项目管理‌:通过Issue跟踪、看板、里程碑等功能,帮助团队管理项目进度和任务。

GitLab还提供了权限管理和审计日志,确保代码的安全性和合规性,适用于从小型开源项目到大型企业级应用的各种规模团队。
GitLab是实现 DevOPS 自动化开发运维流水线的经典工具。

设置GITLAB_HOME路径

先设置一个 GITLAB_HOME 环境变量,为gitlab的工作目录。有2个方式:

  1. 写入环境变量配置文件(推荐)。在 docker-compose.yml 文件的同级目录创建 .env 文件。写入 GITLAB_HOME=/srv/gitlab

  2. 添加到shell的启动配置文件中。echo "GITLAB_HOME=/srv/gitlab" >> ~/.bash_profile

通过第2种方式添加配置后,使用 source ~/.bash_profile 命令,使配置生效

docker_28">创建docker挂载目录

进入上一步骤设置的 $GITLAB_HOME 目录中,新建 data, logs, config 个文件夹。

如下所示:

宿主机目录容器内部目录说明
$GITLAB_HOME/data/var/opt/gitlabStores application data.
$GITLAB_HOME/logs/var/log/gitlabStores logs.
$GITLAB_HOME/config/etc/gitlabStores the GitLab configuration files.

获取可用的GitLab版本

# 镜像名格式:
gitlab/gitlab-ce:<version>-ce.0# 指定固定版本镜像
gitlab/gitlab-ce:17.6.2-ce.0# 使用最新版本镜像
gitlab/gitlab-ce:latest

dockercomposeyml_53">编写docker-compose.yml文件

docker-compose.yml:

version: '3.6'
services:gitlab:image: gitlab/gitlab-ce:17.6.2-ce.0container_name: gitlabrestart: alwayshostname: 'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://gitlab.example.com:8929'gitlab_rails['gitlab_shell_ssh_port'] = 2424ports:- '8929:8929'- '443:443'- '2424:22'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'shm_size: '256m'

通过 GITLAB_OMNIBUS_CONFIG 环境变量,配置 external_url 参数,设定仓库的HTTP地址。

ports 的端口映射,以 GITLAB_OMNIBUS_CONFIG 的相关配置项为准。

docker_85">启动docker

docker compose up -d

容器首次启动,需要数分钟的时间,请耐心等待。
启动成功后,容器状态由 (health: starting) 变为 (healthy)。如下所示:

NAME      IMAGE                          COMMAND             SERVICE   CREATED       STATUS                             PORTS
gitlab    gitlab/gitlab-ce:17.6.2-ce.0   "/assets/wrapper"   gitlab    2 hours ago   Up 12 seconds (health: starting)   0.0.0.0:443->443/tcp, :::443->443/tcp, 80/tcp, 0.0.0.0:8929->8929/tcp, :::8929->8929/tcp, 0.0.0.0:2424->22/tcp, [::]:2424->22/tcp
NAME      IMAGE                          COMMAND             SERVICE   CREATED       STATUS                    PORTS
gitlab    gitlab/gitlab-ce:17.6.2-ce.0   "/assets/wrapper"   gitlab    3 hours ago   Up 51 minutes (healthy)   0.0.0.0:443->443/tcp, :::443->443/tcp, 80/tcp, 0.0.0.0:8929->8929/tcp, :::8929->8929/tcp, 0.0.0.0:2424->22/tcp, [::]:2424->22/tcp

查看容器运行日志:

sudo docker logs -f gitlab

通过前面配置的 external_url,访问 GitLab 项目地址,登录root账号。

  • 用户名为: root
  • 用户密码查看文件:宿主机的 $GITLAB_HOME/config/initial_root_password容器内的 /etc/gitlab/initial_root_password

注:The password file is automatically deleted in the first container restart after 24 hours.

基础配置

GITLAB_OMNIBUS_CONFIG

GITLAB_OMNIBUS_CONFIG 环境变量,允许预设 gitlab.rb 文件的配置项。
具有以下特点:

  • 容器内的 gitlab.rb 配置文件更先被读取。
  • 只会在系统启动时被加载,而不会直接修改 gitlab.rb 文件。
  • 允许设置多个配置项,使用 ; 符号隔开。

配置可包含 GitLab项目地址,数据库配置等。具体请见: gitlab.rb文件配置模板

  • external_url:项目主页。如:"http://gitlab.example.com:8929"
  • gitlab_rails['gitlab_shell_ssh_port']:SSH端口。如:2424
  • gitlab_rails['initial_root_password']: 项目初始化时,预设的root用户密码。

项目首次启动时,也可在容器内注入环境变量 GITLAB_ROOT_PASSWORD ,预设 root 用户的登录密码。

Docker运行命令如下所示:

sudo docker run --detach \--hostname gitlab.example.com \--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2424" \--publish 8929:8929 --publish 2424:22 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab \--volume $GITLAB_HOME/logs:/var/log/gitlab \--volume $GITLAB_HOME/data:/var/opt/gitlab \--shm-size 256m \gitlab/gitlab-ce:<version>-ce.0

修改配置

  1. 进入容器sudo docker exec -it gitlab /bin/bash
  2. 修改配置文件:editor /etc/gitlab/gitlab.rb
  3. 重载配置:gitlab-ctl reconfigure

中文设置

  1. 全局设置:左下角菜单 Admin,点击:Settings - Preferences。 页面找到 Localization - Default language

  2. 用户个性化设置:点击左上角用户头像,下拉框选择 Preferences。页面找到 Localization - Language

当前用户,一定是更改 用户个性化设置,才能生效:

在页面右上方的用户菜单中,选择“Settings”。
进入Settings页面后,点击左侧导航栏中的“Preferences”选项。
在Preferences页面中,找到“Localization”区域,将“Language”选项修改为“简体中文”。
点击页面下方的“Save changes”按钮,保存语言设置。

数据库配置

GitLab 16.0 起,GitLab默认使用2个数据库连接。我们可以禁用,回到原始的单连接模式。

sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
gitlab_rails['databases']['ci']['enable'] = false
sudo docker restart gitlab

系统邮箱配置

  1. 修改配置文件:/etc/gitlab/gitlab.rb
  2. 重载配置,使其生效:gitlab-ctl reconfigure
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'# If your SMTP server is using a self signed certificate or a certificate which
# is signed by a CA which is not trusted by default, you can specify a custom ca file.
# Please note that the certificates from /etc/gitlab/trusted-certs/ are
# not used for the verification of the SMTP server certificate.
gitlab_rails['smtp_ca_file'] = '/path/to/your/cacert.pem'

示例:QQ exmail (腾讯企业邮箱)

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
gitlab_rails['smtp_domain'] = "exmail.qq.com"

https://docs.gitlab.com/17.6/ee/install/docker/installation.html
Steps after installing GitLab: https://docs.gitlab.com/17.6/ee/install/next_steps.html


http://www.ppmy.cn/news/1557776.html

相关文章

云手机方案全解析

助力账号注册登录 在 TikTok 账号注册及登录方面&#xff0c;云手机发挥着至关重要的作用。由于 TikTok 平台对网络环境要求严格&#xff0c;只有国外环境才能使用&#xff0c;云手机则能够通过模拟海外环境来解决这一难题&#xff0c;它可以依据代理设置直接生成相应的语言、定…

路径规划之启发式算法之二十三:免疫算法(Immune Algorithm,IA)

免疫算法(Immune Algorithm,IA)是基于人工免疫系统的理论,受生物免疫系统的启发而推出的一种新型的智能搜索算法。通过模拟生物免疫系统的工作原理来解决优化问题。 一、定义与原理 免疫算法是以人工免疫系统的理论为基础,实现了类似于生物免疫系统的抗原识别、细胞分化、…

【AI编译器】MLIR — 入门

前言 MLIR 社区充满活力。但由于它是一个新的且快速发展的项目&#xff0c;因此可用的教程和文档并不多。没有权威的MLIR书籍。大多数围绕事物的推理都来自民间传说和技术性很强的 RFC。而且由于 MLIR 构建在 LLVM&#xff08;该缩写词以前的意思是“低级虚拟机”&#xff09;…

负载均衡式在线OJ

文章目录 项目介绍所用技术与开发环境所用技术开发环境 项目框架compiler_server模块compiler编译功能comm/util.hpp 编译时的临时文件comm/log.hpp 日志comm/util.hpp 时间戳comm/util.hpp 检查文件是否存在compile_server/compiler.hpp 编译功能总体编写 runner运行功能资源设…

JavaScript文件端点提取与安全分析:两种高效实用的方法

提取JS文件中的所有端点(Endpoints) JavaScript文件中包含了大量的信息,对于安全研究人员来说,提取这些文件中的API端点是发现潜在漏洞的重要环节之一。在本篇文章中,我们将介绍两种高效提取JavaScript文件端点的方法。以下方法主要应用于渗透测试场景,尤其是针对目标域…

ISP算法之BNR降噪(Bayer域)

概述 BNR&#xff08;Bayer Noise Reduction&#xff09;即Bayer域降噪算法。对于噪声的分类如下表所示&#xff1a; 高斯噪声&#xff08; Gaussian&#xff09; 高斯噪声也被称为热噪声&#xff0c;通常是由于电路系统中自由电子的热运动&#xff0c;这种噪声幅度分布服从高…

springboot/ssm智能停车计费系统Java代码编写web停车场车位管理项目

springboot/ssm智能停车计费系统Java代码编写web停车场车位管理项目 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#x…

【数据库】大二数据库复习范围 (快速版)帮助你快速复习数据库

第一章 1. 信息=数据+语义 2:数据库管理系统(database management system, DBMS) 3. 数据库系统(database system, DBS)由数据库、数据库用户、计算机硬件系统和计算机软件系统等几部分组成 4. 数据模型按应用层次可分为概念模型、逻辑模型和物理模型。 5.每个二维表…