GitLab 中文社区版攻略

2023-05-16

支持的 tags 和对应的 Dockerfile

  • 10.210.2.8 (10.2/Dockerfile)
  • 10.310.3.9 (10.3/Dockerfile)
  • 10.410.4.7 (10.4/Dockerfile)
  • 10.510.5.7 (10.5/Dockerfile)
  • 10.610.6.4latest (10.6/Dockerfile)
  • testing (testing/Dockerfile)

这是汉化的 GitLab 社区版 Docker Image twang2218/gitlab-ce-zh,基于官方提供的 Docker Image gitlab/gitlab-ce,以及 Larry Li 的汉化 https://gitlab.com/larryli/gitlab (8.9以前的版本) 和谢航的汉化 https://gitlab.com/xhang/gitlab (8.9 以后的版本) 而制作。

  • 如果碰到汉化问题,欢迎到 https://gitlab.com/xhang/gitlab/issues 来提交 Issue 甚至 Merge Request;
  • 如果碰到镜像问题,欢迎到 https://github.com/twang2218/gitlab-ce-zh/issues 来提交 Issue 或 Pull Request
  • 如果是官方镜像同样存在的问题,欢迎到上游项目 https://gitlab.com/gitlab-org/gitlab-ce/issues(Gitlab 项目自身),或者 https://gitlab.com/gitlab-org/omnibus-gitlab/issues(Docker及打包问题)提交 Issue。

    使用

    简单运行

    如果想简单的运行一下看看,可以执行这个命令:

    
    docker run -d -p 3000:80 twang2218/gitlab-ce-zh:10.6.4  

    可以将 10.6.4 换成你所需要的版本标签。

    启动后就可以通过主机的 3000 端口看到运行结果了,比如用的是本机 Docker 的话,访问:http://localhost:3000 即可。

    测试结束后,彻底清除容器可以用命令:

    
    docker rm -fv <容器ID>  

    这样可以停止、删除容器,并清除数据。

    使用 Docker Compose

    正常部署时,可以使用 Docker Compose 来配置启动。建立一个 docker-compose.yml,内容如下:

    
    version: '2'
    services:
        gitlab:
          image: 'twang2218/gitlab-ce-zh:10.6.4'
          restart: unless-stopped
          hostname: 'gitlab.example.com'
          environment:
            TZ: 'Asia/Shanghai'
            GITLAB_OMNIBUS_CONFIG: |
              external_url 'http://gitlab.example.com'
              gitlab_rails['time_zone'] = 'Asia/Shanghai'
              # 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
              # 比如下面的电子邮件的配置:
              # 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'] = true
              # gitlab_rails['smtp_tls'] = true
              # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
          ports:
            - '80:80'
            - '443:443'
            - '22:22'
          volumes:
            - config:/etc/gitlab
            - data:/var/opt/gitlab
            - logs:/var/log/gitlab
    volumes:
        config:
        data:
        logs:  

    然后使用命令 docker-compose up -d 来启动,停止服务使用 docker-compose down

    如果你的服务器有域名,将上面的 gitlab.example.com 替换为实际域名。

    实验时,也可以直接修改 /etc/hosts 方便测试。比如:

    
    127.0.0.1   gitlab.example.com  

    使用 Docker 命令启动

    直接使用 docker 命令要比使用 docker-compose 繁琐一些,但是可以达到一样的效果。

    首先,Docker 容器数据应该存储于卷中,在这里我们使用最简单的本地命名卷:

    • gitlab-config 存储 GitLab 配置信息
    • gitlab-data 存储数据库
    • gitlab-logs 存储日志

    然后,我们需要创建自定义网络,从而让容器运行于独立的网络中,区别于默认网桥。

    
    docker network create gitlab-net  

    准备好后,开始运行 Gitlab 容器:

    
    docker run -d \
        --hostname gitlab.example.com \
        -p 80:80 \
        -p 443:443 \
        -p 22:22 \
        --name gitlab \
        --restart unless-stopped \
        -v gitlab-config:/etc/gitlab \
        -v gitlab-logs:/var/log/gitlab \
        -v gitlab-data:/var/opt/gitlab \
        --network gitlab-net \
        twang2218/gitlab-ce-zh:10.6.4  

    如果需要进入容器修改配置文件,可以用 docker exec 命令进入容器:

    
    $ docker exec -it gitlab bash
    root@09f6e32c528c:/# vi /etc/gitlab/gitlab.rb
    root@09f6e32c528c:/# gitlab-ctl reconfigure
    Starting Chef Client, version 12.12.15
    resolving cookbooks for run list: ["gitlab"]
    ...  

    如需停止服务,直接运行 docker stop gitlab

    如需卸载服务及相关内容,可以执行:

    
    docker stop gitlab
    docker rm gitlab
    docker network rm gitlab-net
    docker volume rm gitlab-config gitlab-datagitlab-logs  

    testing 镜像

    testing 镜像是为了帮助翻译项目测试所制作的 GitLab 镜像,它始终使用最新的翻译结果。

    • testing 是比较 xhang 翻译项目 的 v10.6.4 标签和 10-6-stable-zh 分支 的差异生成汉化补丁,并基于官方镜像gitlab/gitlab-ce:10.6.4-ce.0 应用汉化结果进行构建的。

    测试镜像将会在所对应分支发生改变后数分钟内开始构建镜像,构建成功后,会推送到 Docker Hub 网站,以方便测试,可以随时关注最新的镜像标签列表中所对应的构建时间。

    运行测试镜像和运行其它镜像一样,可以用 docker-compose 的方法,也可以用之前最简命令的方法:

    
    docker pull twang2218/gitlab-ce-zh:testing
    docker run -d -p 3000:80 twang2218/gitlab-ce-zh:testing  

    需要注意的是,这里的 docker pull 是必须的,因为测试镜像构建比较频繁,需要确保本地镜像是最新的镜像。如果是docker-compose,则执行 docker-compose pull 来或取最新镜像。

    build.sh 构建脚本

    build.sh 构建脚本是为了对维护本项目提供支持的脚本。脚本含 5 个子命令,分别为branchtagrungenerateci

    generate 和 ci 是维护项目所用的命令。

    而 branchtag 和 run 配合使用,可以在不写 Dockerfile 的情况下直接生成特定版本、分支的汉化版本镜像。这样方便测试还在开发的分支,或者尚未进入 twang2218/gitlab-ce-zh 镜像库的镜像。

    generate - 生成 Dockerfile

    各个小版本分支的 Dockerfile,如 10.6/Dockerfile 等,都是使用 generate 命令生成的。因此只需要更新 build-version.sh 中的相关变量就可以完成各个版本镜像的升级。

    • 大多数补丁版本的更新只需要修改 VERSIONS 变量即可;
    • 如果添加新的分支,需要注意同时删除旧的分支,包括 VERSIONS 变量旧的版本,以及目录文件;
    • GitLab 官方镜像有时会出现同一个版本补发一个新的镜像,版本号不变,但是后缀会变化,此时不要忘记修改 APPENDIX变量;

    修改后,只需要重新生成所有文件:

    
    ./build.sh generate  

    执行之后,可以 git diff 查看实际变更情况。

    在提交前,建议先测试新的 Dockerfile 是否可以正确构建。

    ci - 持续集成脚本

    ci 命令是为了持续集成服务准备的,现在支持 Travis CI。

    在 Travis CI 被触发后,会调用 ./build.sh ci 命令。该命令会根据环境变量情况决定是整体各个分支检查、构建、发布,还是针对某个标签检查、构建、发布。

    镜像构建成功后,会自动发布到 Docker Hub。这种方式比直接使用 Docker Hub 中的正则匹配要灵活。

    branch - 构建某个汉化分支的镜像

    格式为:./build.sh branch <基础镜像标签> <英文版本标签> <汉化版本分支>

    例如:./build.sh branch 10.6.4-ce.0 v10.6.4 8-15-stable-zh

    这表明将使用 gitlab/gitlab-ce:10.6.4-ce.0 做为基础镜像,并且使用上游版本标签 v10.6.4 作为对比的基础标签版本,也就是对应于基础镜像版本的标签,然后使用汉化分支 8-15-stable-zh 进行对比,生成汉化补丁,由此构建一个名为twang2218/gitlab-ce-zh:8-15-stable-zh 的镜像。

    tag - 构建某个汉化标签的镜像

    格式为:./build.sh tag <基础镜像标签> <英文版本标签>

    例如: ./build.sh tag 10.6.4-ce.0 v10.6.4

    这表明将使用 gitlab/gitlab-ce:10.6.4-ce.0 镜像为基础镜像,以 v10.6.4 为基础对比版本,以 v10.6.4-zh 为汉化版本进行对比生成汉化补丁,并构建一个名为 twang2218/gitlab-ce-zh:10.6.4 的镜像。

    run - 运行某个构建好的镜像

    格式为:./build.sh <镜像标签>

    例如: ./build.sh run 10.6.4

    这将会以命令 docker run -d -P twang2218/gitlab-ce-zh:10.6.4 来运行镜像。这里使用的是 -P,因此会随机映射端口。方便测试环境测试,避免和其它端口冲突。

    
    CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS                                                                  NAMES
    68e03524b2f2        gitlab-ce-zh:8-15-stable-zh   "/assets/wrapper"   3 seconds ago       Up 1 seconds        0.0.0.0:32776->22/tcp, 0.0.0.0:32775->80/tcp, 0.0.0.0:32774->443/tcp   adoring_bartik  

    从 docker ps 的结果可以看出,该运行的容器的 80 端口映射到了宿主的 32775 端口,因此访问 http://<主机IP>:32775 就可以看到运行结果。初次启动会比较慢,要耐心等待。

    注意事项

    登录

    启动 GitLab 后,第一次访问时,会要求设置 root 用户的密码,密码不得小于8位。设置好后,就可以登录使用了。

    对于早期版本,可以使用默认的 root 用户密码 5iveL!fe 登录。

    配置 SSH 端口

    这里运行示例中,无论是使用 docker-compose.yml 还是 docker run 都使用的是 SSH 默认端口 22 去映射容器 SSH 端口。其目的是希望比较自然的使用类似 git@gitlab.example.com:myuser/awesome-project.git 的形式来访问服务器版本库。但是,宿主服务器上默认的 SSH 服务也是使用的 22 端口。因此默认会产生端口冲突。

    修改宿主的 SSH 端口

    修改宿主的 SSH 端口,使用非 22 端口。比如修改 SSHD 配置文件,/etc/ssh/sshd_config,将其中的 Port 22 改为其它端口号,然后 service sshd restart。这种方式比较推荐,因为管理用的宿主 SSH 端口改成别的其实更安全。

    修改容器的 SSH 端口

    修改容器的端口映射关系,比如将 -p 22:22 改为 -p 2222:22,这样 GitLab 的 SSH 服务端口将是 2222。这样做会让使用 GitLab 的 SSH 克隆、提交代码有些障碍。这种情况要改变用户使用 Git 的链接方式。

    要从之前的:

    
    git clone git@gitlab.example.com:myuser/awesome-project.git  

    改为明确使用 ssh:// 的 URL 方式。

    
    git clone ssh://git@gitlab.example.com:2222/myuser/awesome-project.git  

    相关信息

    • GitLab Docker 相关操作请参考:http://docs.gitlab.com/omnibus/docker/
    • GitLab 官方英文社区版 Docker 镜像:https://hub.docker.com/r/gitlab/gitlab-ce/
    • GitLab 官方英文企业版 Docker 镜像:https://hub.docker.com/r/gitlab/gitlab-ee/

继续阅读

更多最佳实践技术文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitLab 中文社区版攻略 的相关文章

  • MongoDB 服务器无法使用 gitlab-ci 在 gitlab runner 上启动

    现在我正在使用 Ruby 和 Mongo 开发一个应用程序 但是当我使用 gitlab ci 部署应用程序时 我陷入了困境 似乎 mongo 服务器没有在 gitlab runner 的测试环境中启动 这是我的 gitlab ci yml
  • 如何提取 docker 镜像的所有替代标签?

    我使用构建管道管理 gitlab 所有组件都封装在来自官方 gitlab 维护者的 docker 镜像中 每当我更新时 通常每周一次 我需要检查 gitlab gitlab runner helper 是否仍然适用于当前最新版本的 gitl
  • 如何在 gitlab CE 9 中将项目从一个组转移到一个用户?

    我想将项目从一个组转移到另一个用户 例如 来自https gitlab local groupname projectname https gitlab local groupname projectname to https gitlab
  • 如何强制 GitLab 在启动新管道之前运行完整的管道?

    我有一个与我的项目关联的运行程序以避免并发构建 GitLab 在开始新管道之前处理完整的管道 并发设置为 1 运行器的配置文件 before script echo CI COMMIT SHA echo CI PROJECT DIR sta
  • gitlab - 图标被矩形替换

    我最近安装了 gitlab 似乎所有图标都被矩形替换了 其他一切似乎都工作正常 知道是什么原因造成的吗 edit on another computer I seem to get Korean characters instead of
  • GitLab CI 启用 SCP

    我目前正在使用 GitLab com 上的共享运行器之一 是否可以设置 gitlab ci yaml 文件 以便构建可以将 SCP 文件从远程服务器传输到运行器上 我的目标是 SCP 文件 这些文件是我的构建所必需的依赖项 但它们不会在任何
  • Nexus 工件上传

    如何使用 jenkins shell 将工件上传到 Nexus 并自动生成版本 我正在使用这个脚本 我想在上传工件时自动生成版本 mvn deploy deploy file DgroupId DartifactId Dversion Dg
  • GItlab:有什么方法可以选择变量值作为下拉菜单

    在 Gitlab ci 中 我们声明了变量 如下所示 USER NAME value description Enter Username File Name description Enter the file name 它只提供一个文本
  • 如何在 gitlab-ci docker 执行器中使用 cuda

    我们正在使用 gitlab 持续集成来构建和测试我们的项目 最近 其中一个项目添加了 CUDA 的要求以启用 GPU 加速 我不想改变我们的管道 docker 和 gitlab ci 对我们来说运行良好 所以我想以某种方式让 docker
  • Gitlab 个人访问令牌 - 在哪里保存令牌以进行无缝克隆/拉取/推送

    谁能告诉我把 Gitlab PAT 个人访问令牌放在哪里 正在下载 git https gitlab com mycompany myproject git ref v0 0 1 https gitlab com mycompany myp
  • 如何将标签推送到 CI 中的分支?

    我想将手动作业添加到我的拉取请求中 以在运行手动作业时标记我的源分支 该标签将触发我的 bitrise 配置的构建 然而 当我尝试推送我的标签时 我遇到了这个问题 注意 我尝试将标签推送到的分支不受保护 git checkout CI CO
  • Git:推送到多个远程

    Short 如果您将多个远程存储库链接到本地 文件 是否有一种方法可以同时推送到它们 Long 由于工作原因 我的代码必须使用gitlab和github遥控器 因此 一旦我进行了一些本地更改 我就想更新这两个存储库 我的 git confi
  • 在某些条件下使用钩子自动将一个分支合并到另一个分支?

    我的 github 存储库中有两个分支 master and dev分支 我有一个需要合并的要求master分支到dev在以下条件下分支 一旦 PR 直接合并到 master 分支 那么我需要自动将 master 分支合并回 dev 分支
  • 用于指示存储库已弃用的 Git 挂钩

    我们有一个存储库 托管在 GitLab 实例上 少数项目仍在引用该存储库 但已被弃用 取而代之的是另一个解决方案 有什么方法可以将存储库标记为 已弃用 吗 理想情况下 每个fetch来自此存储库 作为git submodule update
  • 将私有 GitLab 的依赖项与 NPM 结合使用

    我正在尝试从私有 GitLab 实例安装 NPM 依赖项 所以 我有带有基本文件的存储库 我在中添加了这个依赖项package json在我的项目上 node demo package https oauth2
  • 在 .gitlab-ci.yml 上找不到curl命令

    我有一个 gitlab ci yml 文件 它创建一些 docker 镜像并将其推送到 AWS ECR 当我运行curl命令将一些工件推送到远程存储库时 它显示curl 未找到 我已经在使用 openjdk 映像进行 gradlew 构建
  • 是否可以在一台机器上使用 GitHub 和 GitLab?

    我的账户位于GitHub and GitLab 我生成了 RSA 密钥并将其添加到我的帐户中GitLab 但现在我需要与GitHub在第二个项目上 我知道GitLab和GitHub都使用git 请告诉我是否可以在一台机器上使用 GitHub
  • 如何通过 gitlab-rails 更改电子邮件地址(避免电子邮件重新确认)

    当我等待将合并请求引入 Gitlab 以避免此问题时 我需要一种解决方法来通过 gitlab rails 控制台编辑用户的电子邮件地址 使用这个 user User find by name test user email email pr
  • bash:gitolite:找不到命令

    我正在尝试使用 Gitolite 在 Gitlab 中创建一个新分支 我完成安装步骤 当我遇到 设置 gitolite 部分时 我遇到了麻烦 我跟着这个link http sitaramc github com gitolite setup
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像

随机推荐

  • JS 中的=>箭头函数使用说明

    在新的JS版本中 xff0c 出现了以双箭头 61 gt 表示函数的方式即箭头函数 以下对箭头函数的使用作出说明 一 箭头函数与普通函数 xff08 function xff09 的区别 xff1a 1 1 箭头函数形式如下 xff1a s
  • C语言 冒泡排序

    目标 xff1a 使用冒泡排序对一个数组进行排序 要求 xff1a xff08 1 xff09 从小到大输出排序结果 xff08 2 xff09 输出每一趟排序 xff08 3 xff09 计算交换多少次 一 将数组元素输入 本题要求先输入
  • C语言 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    要求 xff1a 1 xff09 用while循环及getchar 函数完成字符串输入 xff0c 回车键结束 2 xff09 分别统计英文字母 空格 数字和其它字符的个数 3 xff09 打印统计结果 运行参考示例 xff1a 输入1 x
  • C语言 数组选择法排序

    利用选择法对n个数 xff08 100以内正整数 xff09 进行排序 选择法排序的过程是 xff1a 将第1个元素作为最小元素 xff0c 与后面n 1个元素比较找出最小元素 xff0c 记录其下标 xff0c 与第1个元素互换 xff1
  • FL Studio 20 怎么设置中文?

    根本找不到语言切换那一项
  • Linux中软件包及安装命令

    2022 12 5 DAY08 一 xff0c 装包 xff08 包名 xff0c 软件名 xff09 包名 软件名 1 xff0c 获取本地软件包 mount dev sr0 mnt 临时生效 xff0c 重启后需要再次挂载 挂载 文件系
  • 网络安全学习--kali攻击WiFi暴力破解个人笔记

    我的无线网卡是3072l xff08 在win11上运行会掉 xff0c 必须杀掉进程或者拔掉换个接口 xff09 步骤一准备工作 插入网卡 ifconfig 检查网卡信息 xff0c 出现wlan0表示连接成功 步骤二 1 开启无线网卡监
  • 【C语言】从键盘输入10个数,找出其中最小值并将它插在第一个数之前,再将新序列输出出来

    include lt stdio h gt void main int a 10 61 0 i j min for i 61 0 i lt 10 i 43 43 xff09 scanf d amp a i xff1b 输入10个数 min
  • 树莓派ffmpeg直播推送,nginx视频流接受转码,客户端hls rtmp视

    树莓派ffmpeg直播推送 xff0c nginx视频流接受转码 xff0c 客户端hls rtmp视频流拉流 树莓派利用ffmpeg将摄像头视频流以rtmp视频流的格式 xff0c 推送到安装有nginx nginx rtmp的云服务器端
  • c++ 中 char 与 string 之间的相互转换问题

    首先必须了解 xff0c string可以被看成是以字符为元素的一种容器 字符构成序列 xff08 字符串 xff09 有时候在字符序列中进行遍历 xff0c 标准的string类提供了STL容器接口 具有一些成员函数比如begin end
  • POSIX消息队列

    POSIX消息队列概述 消息队列是Linux IPC中很常用的一种通信方式 xff0c 它通常用来在不同进程间发送特定格式的消息数据 消息队列和管道和FIFO有很大的区别 xff0c 主要有以下两点 xff1a 一个进程向消息队列写入消息之
  • php 10位isbn 13位isbn 的相互转换

    由 2007 年 1 月 1 日 起 xff0c 国 际 标 准 书 号 下 简称书号 的格 式 会 由 10 位 修 订 为 13 位 是 次 修 订 的 主 要 目 的 xff0c 是增加国际标 准 书 号 系 统 的 容 量 xff0
  • error: failed to run custom build command for `openssl-sys `

    error failed to run custom build command for 96 openssl sys v0 9 60 96 遇到这个问题需要安装最新的libssl包 xff0c 1 执行命令 xff1a sudo apt
  • docker gitlab/gitlab-ce 升级版本

    原因 发现服务器内存占用100 执行命令查看内存占用 ps aux head 1 ps aux grep v PID sort rn k 43 4 head 20 发现 tmp juma目录占用内存过高 但是本机目录并没有 tmp juma
  • php7操作MongoDb详解

    MongoDB的强大是不容置疑的 xff0c 目前PHP针对MongoDB的操作挺多的 xff0c 但是看的有点晕 xff0c 还是自己总结一下实在 xff0c 因为现在一直用PHP7及以上了 xff0c 所有PHP7之前的版本就不再去说明
  • 立即数

    一 概念 xff1a 通常把在 立即寻址方式 指令中给出的数称为立即数 二 判断步骤 xff1a 把数据转换成二进制 xff0c 从低到高写成 4 个一组 xff0c 最高位不够一组的补 0 xff1b 数 1 的个数 xff0c 如果大于
  • arch linux kde 安装 xrdp

    arch linux kde 安装 xrdp 前言安装环境配置安装xrdp修改配置故障排除端口查询检查防火墙鼠标指针周围出现黑框使用 KDE plasma 时出现黑屏登录到会话管理器后可能出现黑屏 参考文献 前言 我已经放弃了 xff0c
  • 在Windows上使用EDA软件——利用WSL安装IC618、SPECTRE181

    文章目录 前言一 安装WSL1 启用适用于 Linux 的 Windows 子系统2 安装所选的 Linux 分发3 检查WSL版本 二 安装前准备1 将WSL迁移到其他盘2 更换源3 安装图形界面3 1 Windows中的操作3 2 WS
  • sudo apt install ros-humble-desktop报 unable to locate package ros-humble-desktop问题解决

    1 首先我按照教程安装的Ubuntu 20 04 xff0c 执行命令 其他的指令都正常 xff0c 一直到sudo apt install ros humble desktop到这步执行后 xff0c 就无法正常下载 google和百度都
  • GitLab 中文社区版攻略

    支持的 tags 和对应的 Dockerfile 10 2 10 2 8 10 2 Dockerfile 10 3 10 3 9 10 3 Dockerfile 10 4 10 4 7 10 4 Dockerfile 10 5 10 5 7