快速便捷地在Docker中部署并汉化GitLab的教程
一、gitlab安装
1.1 镜像查询
# 查询gitlab有哪些镜像
docker search gitlab
1.2 镜像拉取(重点)
镜像的拉取会直接影响到后面我们汉化,所以镜像的选择尤为重要。# 查询gitlab有哪些镜像
docker search gitlab
可以看到主要有两个镜像,比较方便我们利用的,第一个是官方社区版的镜像,第四个是其他大神爱好者汉化社区版的镜像。后续两种镜像我都会进行介绍。
1.2.1 官方社区版
官方社区版是纯英语的,可以原汁原味地体验gitlab。而且镜像更新非常积极,新加的功能都能够体验到。
如果使用以下命令拉取,得到的就会是最新版的gitlab。
docker pull gitlab/gitlab-ce
但是最新版有个弊端就gitlab的中文比一定能马上匹配。如果想知道现在汉化匹配到什么版本了,可以查看gitlab中文社区。
https://gitlab.com/xhang/gitlab/
笔者下载了12.3.5版本。
docker pull gitlab/gitlab-ce:12.3.5-ce.0
1.2.2 已汉化社区版
如果不想自己汉化的话,可以选择第四个是汉化社区版的镜像。
但是这个镜像目前已经快2年没有更新维护了,gitlab版本也是上一个版本11.1。
1.3 镜像安装
镜像拉取下来后,使用docker images查看自己拉取的镜像,然后使用docker run启动gitlab容器,建议启动命令写成一个bash,防止忘记自己启动时的参数配置。
#!/bin/bash
IMAGE_NAME='gitlab/gitlab-ce'
CONTAINER_NAME='gitlab-ce-zh'
CONTAINER_ID=`docker run \
-d \
-p 7080:80 \
-p 7443:443 \
-p 7022:22 \
--restart always \
-v /home/gitlab/config:/etc/gitlab \
-v /home/gitlab/logs:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
--name ${CONTAINER_NAME} \
${IMAGE_NAME}`
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
# 以上参数的具体用法,建议读者可以自己动手对比添加和不添加的区别,加深学习印象
命令运行结束后,会出现容器ID,可以通过docker ps查看容器是否成功启动。然后访问gitlab的地址,如果能打开gitlab主页说明已经成功运行。如果使用的是中文社区版的,打开之后就是中文的了。二、gitlab配置
2.1 访问url配置
url的配置在/etc/gitlab/gitlab.rb里面,基本上gitlab的所有配置都可以在gitlab.rb这个文件里面完成配置。
# url配置样例
external_url = 'http://127.0.0.1:80/gitlab'
2.2 管理员配置
首次登录还需要配置管理员密码,管理员账号为root,密码在首次登录的页面上设置。
三、汉化
如果直接使用汉化的docker镜像就不用进行这一步了。
3.1 获取汉化包
访问https://gitlab.com/xhang/gitlab/,根据自己的gitlab获取相应版本的汉化包。也可以使用大stable版本。比如12.3.5可以使用gitlab-12-3-stable-zh
可以通过命令获取
# 首先查看gitlab的版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 使用wget获取具体的版本
wget https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz
# 或者用git获取大版本
git clone -b gitlab-12-3-stable-zh https://gitlab.com/xhang/gitlab/
也可以直接下载
3.2 汉化
# 把汉化包复制到容器/opt/gitlab/embedded/service目录下
docker cp [汉化包名称] [容器ID]:/opt/gitlab/embedded/service
# 进去容器里面继续操作
docker exec -it [容器ID] bash
cd /opt/gitlab/embedded/service
# 把汉化包里面的所有文件复制到gitlab-rails里面
cp -rf [汉化包名称]/* gitlab-rails
# 如果出现下面两条语句是正常的
cp: cannot overwrite non-directory 'gitlab-rails/log' with directory 'gitlab-v12.3.5-zh/log'
cp: cannot overwrite non-directory 'gitlab-rails/tmp' with directory 'gitlab-v12.3.5-zh/tmp'
# 重新加载和启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
再次访问主页,已经汉化了。可以使用docker commit命令把已经汉化的版本保存成镜像,方便下次迁移使用。
docker commit -a "[作者]" [容器ID] [新的镜像名]:[tag]
后续
安装好gitlab后发现无法推送代码到服务器,端口为8081,从页面上看git的拉取地址出现了错误,字符串值为docker容器的id。我们要将它修改为主机ip地址。
按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。
# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址(不要加端口!)
external_url 'http://192.168.199.231'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出
# 重启gitlab容器
$ docker restart gitlab
上一篇: 如何在GitLab上安装中文版本
下一篇: Docker安装汉化版Gitlab
推荐阅读
-
快速便捷地在Docker中部署并汉化GitLab的教程
-
澎湃新闻对话腾讯丁珂:从 "治已病 "到 "治未病",企业需快速构建 "安全免疫力"--丁珂指出,对企业而言,安全不是成本而是生命线 丁珂指出,对企业而言,安全不是成本而是生命线,也是商业 "硬币 "的另一面。在数字智能化的新阶段,发展驱动安全建设已成为普遍共识,企业需要转变安全思维,从被动建设到主动防御,构建一套新的安全范式和框架,以更加积极、主动的安全观来提升数字安全免疫力,以 "治未病 "的理念取代 "治已病",前置安全,快速构建 "安全免疫力"。对 "已病",前置预判,及时应对处置安全风险,才能维护品牌价值,保障健康发展。 与此同时,安全建设还普遍存在 "不知道往哪投、怎么投 "的痛点。对此,腾讯安全提出,企业可以按照数字安全免疫模型的框架进行安全全局部署,重点在业务安全、数据安全、安全运维管理、边界安全、终端安全、应用开发安全等薄弱环节的关键领域注入 "免疫增强针"。 今年进入公众视野的AIGC还在产业化、产品化的过程中,但大量攻击者已经利用它生成攻击脚本、钓鱼邮件,甚至伪造身份进行诈骗。"人工智能本身是否安全,会不会让网络更不安全? 腾讯安全研究认为,AIGC的风险主要集中在 "无法解释 "和 "无法追踪 "的特点上,但这在技术上是能够找到应对方法的。丁珂谈到,AIGC作为生产力的巨大提升,确实会带来更复杂的攻防态势和更大的防御难度。但任何新技术都要经历这样的周期。而法律法规也会随着技术的演进而不断更新,使新技术的发展更加规范和健全。 丁珂认为,随着我国网络安全法律法规体系的不断完善,合规性将给企业推进网络安全带来很大的推动力,并很直观地展现在需求端。未来,伴随着数据要素市场的建立或企业对数据价值的挖掘,也将带动数据安全市场的快速增长。 对于腾讯安全的商业逻辑和运营,丁珂表示,不谋求建立竞争壁垒,而是期望与生态共同发展,腾讯安全希望通过能力开放,实现安全与业务相伴的生态模式。 谈到未来,丁磊表示,安全领域已经进入加速发展期,在蓝海中会持续关注很多新的业务领域,希望孵化出新的商业模式,腾讯安全团队也会持续关注并抓住机会做好产品。 以下为采访实录(在不改变原意的基础上略有删减): 冲浪新闻:当前,以人工智能、大数据等新技术为驱动的第四次工业革命正向纵深推进,给人类生产生活带来深刻变革。而互联网作为新技术的载体,面临的安全挑战不仅数量越来越多,形式也越来越复杂。从互联网安全从业者的角度,腾讯观察到近年来国内外网络安全形势发生了哪些变化?这些变化呈现出怎样的趋势?